You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL中动态将JSON数组转换为JSON对象的方法求助

PostgreSQL 动态JSON数组转扁平化JSON对象

要实现未知键的JSON数组转扁平化JSON对象,可通过拆分数组、展开键值对再聚合的方式完成,以下是具体实现:

基础示例(直接处理字面量)

如果输入是JSON数组字面量,执行以下SQL即可得到目标结果:

SELECT json_object_agg(key, value) AS flattened_json
FROM jsonb_array_elements('[{"col1": "1", "col2": null, "col3": "7"}, {"col4": "19"}, {"col5": "19", "col6":"18"}]'::jsonb) AS arr_items,
     jsonb_each(arr_items) AS kv_pairs;

表字段处理示例

如果JSON数组存储在表的字段中(假设表名为data_table,字段名为json_arr_col),使用以下SQL:

SELECT json_object_agg(kv.key, kv.value) AS flattened_json
FROM data_table,
     jsonb_array_elements(data_table.json_arr_col) AS arr_items,
     jsonb_each(arr_items) AS kv;

关键步骤说明

  • jsonb_array_elements:将输入的JSON数组拆分为单独的JSON对象行
  • jsonb_each:将每个JSON对象拆解为key(键)和value(值)的行记录
  • json_object_agg:将所有键值对聚合为单个JSON对象,若存在重复键,后出现的键值对会覆盖先出现的

注:如果使用json类型而非jsonb,只需将上述SQL中的jsonb_array_elements替换为json_array_elements,jsonb_each替换为json_each即可。

内容的提问来源于stack exchange,提问作者Somu Sinhhaa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 08:45:48