我有这样一行JSON:
1. {"0": 2} 2. {"2": 0} 3. {"3": 0} 4. {"4": 1} 5. {"13": 0}
如何将其转换为单个对象?
{ "0": 2, "2": 0, "3": 0, "4": 1, "13": 0 }
我尝试使用jsonb_agg进行试验,但不起作用
xmjla07d1#
你可以使用jsonb_each将对象分割成一组键/值对,然后使用jsonb_object_agg将聚合的键/值对作为jsonb对象返回:
jsonb_each
jsonb_object_agg
select jsonb_object_agg(c.key, c.value) as myJson FROM mytable, jsonb_each(myjson) as c
Demo here
nbewdwxp2#
我认为最简单的方法是定义一个可以做到这一点的聚合:
create aggregate jsonb_concat_agg(jsonb) ( sfunc = jsonb_concat(jsonb, jsonb), stype = jsonb );
然后您可以:
select jsonb_concat_agg(the_column) from the_table;
2条答案
按热度按时间xmjla07d1#
你可以使用
jsonb_each
将对象分割成一组键/值对,然后使用jsonb_object_agg
将聚合的键/值对作为jsonb对象返回:Demo here
nbewdwxp2#
我认为最简单的方法是定义一个可以做到这一点的聚合:
然后您可以: