Postgresql:从 json 数组到单个 id 索引的 json

问题描述 投票:0回答:1

在 SQL 函数中,我有一个 jsonb 数组,格式如下:

[{id: 1, name: John}, {id: 2, name: Jane}]

我想使用 ids 作为键将此结构转换为单个 jsonb:

{
  1: {id: 1, name: John},
  2: {id: 2, name: Jane}
}
sql json postgresql plpgsql jsonb
1个回答
0
投票

您可以使用

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,“姓名”:“简”}}
© www.soinside.com 2019 - 2024. All rights reserved.