postgresql 如何在jsonb中将元素转换为数组[Postresql]

wydwbb8l  于 2022-11-29  发布在  PostgreSQL
关注(0)|答案(3)|浏览(712)

我需要将jsonb列中的某个元素转换为数组
我有什么:

{"a": {
          "b": "2022-11-03",
          "c": "321321",
          "d": "213321"
     }
}

我需要:`

{"a": [
        {
          "b": "2022-11-03",
          "c": "321321",
          "d": "213321"
         }
      ]
}
fsi0uk1n

fsi0uk1n1#

您可以使用jsonb_set()来执行以下操作:

SELECT jsonb_set(the_column, '{a}', jsonb_build_array(the_column -> 'a'))
FROM the_table
6yt4nkrj

6yt4nkrj2#

请使用**“json_agg”**函数。

select json_agg(DATA) from table_json

示例:db<>fiddle

cidc1ykv

cidc1ykv3#

使用这里的函数JSON functions和SQL/JSON路径语言。使用路径语言分解原始对象,然后jsonb_build_object以新的形式重建它。

SELECT
    jsonb_build_object(
        (jsonb_path_query_array('{"a": {"b": "2022-11-03","c": "321321","d": "213321"}}', '$.keyvalue()') -> 0 -> 'key') ->> 0, 
        (jsonb_path_query_array('{"a": {"b": "2022-11-03","c": "321321","d": "213321"}}', '$.keyvalue()') -> 0 -> 'value' 
         || '[]'::jsonb));

jsonb_build_object                     
------------------------------------------------------------
 {"a": [{"b": "2022-11-03", "c": "321321", "d": "213321"}]}

相关问题