我面临一些将数据转换为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
答案 0 :(得分:0)
您可以使用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;