Advertisement
vasil_k_k

raise_notice_for_json_recursive

Jan 17th, 2024 (edited)
1,189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION raise_notice_for_json_recursive(json_input jsonb)
  2. RETURNS VOID AS $$
  3. DECLARE
  4.     key_text text;
  5.     value_text text;
  6. BEGIN
  7.  
  8.     FOR key_text, value_text IN SELECT * FROM jsonb_each_text(json_input)
  9.     LOOP
  10.  
  11.         RAISE NOTICE 'Key: %, Value: %', key_text, value_text;
  12.  
  13.         IF jsonb_typeof(json_input->key_text) = 'object' THEN
  14.             PERFORM raise_notice_for_json_recursive(json_input->key_text);
  15.         END IF;
  16.     END LOOP;
  17. END;
  18. $$ LANGUAGE plpgsql;
  19.  
  20.  
  21. SELECT raise_notice_for_json_recursive('{"name": "John", "age": "30", "address": {"city": "New York", "zip": "10001"}}');
  22.  
  23.  
  24. DO $$
  25.  
  26. DECLARE
  27.     record JSONB := '{"name": "John", "age": "30", "address": {"city": ["New York", "London"], "zip": "10001"}}';
  28.     city_value TEXT;
  29. BEGIN
  30.  
  31.     city_value := record -> 'address' -> 'city' ->> 1;
  32.  
  33.     RAISE NOTICE 'City: %', city_value;
  34. END $$;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement