postgres9.4循环到jsonb:如何选择key:val对的val

Ant*_*ony 3 postgresql for-loop multidimensional-array jsonb

这个plpgsql脚本从一组jsonb对象键:值对中选择键,但是如何选择每对的值?

DO
$BODY$
DECLARE
    js jsonb := '{"a": "1", "b": "2", "c": "3"}';
    i text;
BEGIN
  FOR i IN SELECT * FROM jsonb_each_text(js)
  LOOP
    RAISE NOTICE 'key %', i;
    --RAISE NOTICE 'value %', i.value; <--fai
  END LOOP;
END;
$BODY$;
Run Code Online (Sandbox Code Playgroud)

应该可以作为手册页http://www.postgresql.org/docs/9.4/static/functions-json.html表示返回值是关键文本,值文本的设置.这篇帖子Postgres - 数组for循环回答了数组的问题.还尝试了jsonb_each()和jsonb_array_elements()将迭代器更改为jsonb,错误"无法从对象中提取元素"

Sim*_*stö 10

正如您所声明的i那样text,它只包含第一列.声明为RECORD:

DO
$BODY$
DECLARE
    js jsonb := '{"a": "1", "b": "2", "c": "3"}';
    i record;
BEGIN
  FOR i IN SELECT * FROM jsonb_each_text(js)
  LOOP
    RAISE NOTICE 'key %', i.key;
    RAISE NOTICE 'value %', i.value;
  END LOOP;
END;
$BODY$;
Run Code Online (Sandbox Code Playgroud)