如何在postgresql 9.3中循环遍历JSON数组

Val*_*rio 22 postgresql json

我正在编写一个新的postgreSQL数据库的函数,我试图循环嵌套结构.

新的JSON功能甚至可以实现吗?我想要做的是在下面:

DO
$BODY$
DECLARE
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]';
    i record;
BEGIN
  FOR i IN SELECT * FROM json_array_elements(omgjson)
  LOOP
    RAISE NOTICE 'output from space %', i;
  END LOOP;
END;
$BODY$ language plpgsql
Run Code Online (Sandbox Code Playgroud)

这将返回一组记录(文本!),这不是JSON!所以我不能查询它i->>'type',但这正是我想要完成的...

Val*_*rio 54

我有点愚蠢,但postgresql网站上关于这个json功能的文档实际上是最小的

我所做的就是解决问题

DO
$BODY$
DECLARE
    omgjson json := '[{ "type": false }, { "type": "photo" }, {"type": "comment" }]';
    i json;
BEGIN
  FOR i IN SELECT * FROM json_array_elements(omgjson)
  LOOP
    RAISE NOTICE 'output from space %', i->>'type';
  END LOOP;
END;
$BODY$ language plpgsql
Run Code Online (Sandbox Code Playgroud)

  • 在更高版本的 postgresql 中,您可以使用 jsonb_array_elements (5认同)