在 SQL 函数中,我有一个 jsonb 数组,格式如下:
[{id: 1, name: John}, {id: 2, name: Jane}]
我想使用 ids 作为键将此结构转换为单个 jsonb:
{
1: {id: 1, name: John},
2: {id: 2, name: Jane}
}
您可以使用
jsonb_array_elements()
分解数组,然后使用 jsonb_object_agg()
重新聚合为对象。 db<>fiddle 的演示:
select jsonb_object_agg(e->>'id',e)
from my_table
,jsonb_array_elements(jdata)as elements(e)
jsonb_object_agg |
---|
{“1”:{“id”:1,“姓名”:“约翰”},“2”:{“id”:2,“姓名”:“简”}} |