繁体   English   中英

如何在pgsql中将json转换为json数组

[英]How to convert json into json array in pgsql

我面临一些将数据转换为json对象的问题。 有一个称为里程碑的表,其中包含以下数据:

id  name    parentId
a   test1   A
b   test2   B
c   test3   C
d   test4   A
e   test5   B

我想将结果转换为Postgres中的json类型:

content(json type)                                                         parentId
"assignees": [{"id": "a", "name": "test1"},{"id": "d", "name": "test4"}]   A
"assignees": [{"id": "b", "name": "test2"},{"id": "e", "name": "test5"}]   B
"assignees": [{"id": "c", "name": "test3"}]                                C

您可以使用jsonb_build_object()创建ID /名称对,然后使用该聚合到一个数组jsonb_agg()

select parentid, 
       jsonb_build_object('assignees', jsonb_agg(jsonb_build_object('id', id, 'name', name)))
from milestone
group by parentid
order by parentid;

如果您不想重复列名,或者如果列数超出显示的范围,则还可以使用to_jsonb()然后删除parentid

select m.parentid, 
       jsonb_build_object('assignees', jsonb_agg(to_jsonb(m) - 'parentid')))
from milestone m
group by m.parentid
order by m.parentid;

在线示例: https//rextester.com/JXVFF71777

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM