使用任意键转换jsonb



我需要用任意键和类似的整数值来转换json对象

{"a":1, "sql":5}→CCD_ 2。

我想不出正确的postgres-jsonb方法。我设置了这个数据库小提琴,使其易于交互。

我们非常感谢您的帮助。提前谢谢。

您可以在子查询中使用jsonb_eachjsonb_object_agg的组合:

SELECT (
SELECT jsonb_object_agg(key, jsonb_build_object('f', value))
FROM jsonb_each(f)
) AS transformed
FROM test

(更新的小提琴(

在没有子查询的情况下,当只提取单行或按行标识符进行分组时,也可以直接聚合:

SELECT id, jsonb_object_agg(key, jsonb_build_object('f', value)) AS transformed
FROM test, jsonb_each(f)
GROUP BY id

(调整小提琴(

SELECT jsonb_object_agg(j.key, jsonb_build_object('f', j.val))
FROM ( VALUES
( 1, '{ "a": 1, "sql": 5 }'::jsonb )
, ( 2, '{ "b": "test", "lqs": false }'::jsonb )
) t(id, jsonb_column)
CROSS JOIN LATERAL jsonb_each(t.jsonb_column) j(key, val)
GROUP BY t.id
;

返回

jsonn_object_agg
{"a":{"f":1};sql":{"f":5}}
{"b":{"f":"测试"};lqs":{"f":false}}

最新更新