【发布时间】:2018-06-13 17:10:59
【问题描述】:
我需要从 pl/pgsql 函数中的 restful 服务获取 json。 (我无法控制restful webservice。它是由其他人发布的)。我可以获得 json,但无法将其转换为行(用于插入表)。它的简化格式如下。每个 GUID 都是随机的,我以前不知道它们的内容。当我从文本(使用 ::json)转换它时,我没有收到任何错误,所以它是有效的 json。
l_json := '{"GUID-0001":{"Id":"1","Field1":"aaa1","Field2":"bbb1"}, "GUID-0002":{"Id":"2","Field1":"aaa2","Field2":"bbb2"}}'::json;
我尝试了几个 Postgresql json 函数,但每次都遇到不同的错误。即当我使用 json_array_elements() 函数时,我得到“错误:无法在非数组上调用 json_array_elements”。当我尝试 json_each_text() 函数时,我得到“错误:查询没有结果数据的目的地”
我需要如下结果集:
GUID | Id | Field1 | Field2
---------+----+--------+-------
GUID-0001| 1 | aaa1 | bbb1
GUID-0002| 1 | aaa2 | bbb2
【问题讨论】:
-
您是否要为
insert“将其转换为行”?此外,您有一个嵌套对象,因此您无法仅使用一个 pg json 函数获得所需的结果集。 -
我想将结果集插入到表中作为示例结果集。我愿意使用每个 json 函数来实现目标,但我仍然无法弄清楚,因为我对 postgresql 和 json 都是新手。
-
dbfiddle.uk/… - 这可以给你一个方向。但是,如果您对 postgresql 和 json 都很陌生,那么 IMO 会遇到更多问题。你至少需要学习一些基础知识。
-
@Abelisto 您的评论是最接近的解决方案。因为我还没有任何声誉,所以我无法投票给你的评论。谢谢!
标签: json postgresql plpgsql data-conversion