我想在 JSON 串列上轉換 JSON 表。
這段代碼:
DO
$$
DECLARE
varMyJson jsonb;
BEGIN
varMyJson := '[{"Field1":"Value1"},{"Field2":"Value2"}]'::jsonb;
RAISE NOTICE 'varMyJson : %', varMyJson;
SELECT jsonb_object_agg(a.key, a.value)
INTO varMyJson
FROM
(
SELECT 'MyKey' as key, JsonString.value
FROM jsonb_array_elements(varMyJson) JsonString
) a;
RAISE NOTICE 'varMyJson : %', varMyJson;
END
$$
回傳:
NOTICE: varMyJson : [{"Field1": "Value1"}, {"Field2": "Value2"}]
NOTICE: varMyJson : {"MyKey": {"Field2": "Value2"}}
但是,我想要這個:
{"MyKey":{"Field1":"Value1"},"MyKey":{"Field2": "Value2"}}
我不明白為什么它不起作用。
uj5u.com熱心網友回復:
您不能擁有jsonb具有重復鍵的物件。你的json_object_agg功能果然作業時,你的鑰匙是唯一的。
您可以在jsonb陣列中獲得所需的結果:
with data as (
select '[{"Field1":"Value1"},{"Field2":"Value2"}]'::jsonb as items
)
select json_agg(v) from (
select jsonb_build_object('myKey', jsonb_array_elements(items)) as v from data
) x
uj5u.com熱心網友回復:
SELECT json_object_agg('MyKey', JsonString.value)
FROM json_array_elements('[{"Field1": "Value1"}, {"Field2": "Value2"}]' :: json) JsonString
結果 = { "MyKey" : {"Field1": "Value1"}, "MyKey" : {"Field2": "Value2"} }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/376148.html
標籤:json PostgreSQL的 总计的
上一篇:JQ根據鍵值洗掉物件
