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

如何去除Postgres聚合JSON数组元素的列名

解决PostgreSQL json_agg带列名的问题

你的问题根源在于json_agg(v)是把整个行对象转成JSON,所以每个元素都会被包裹在以默认列名为键的对象里。要得到不带列名的JSON数组,有两种简单方法:

方法1:给子查询的JSON列起别名后聚合

给每个json_build_object的结果指定别名,然后聚合这个别名即可:

select json_agg(v.obj)
from (
  select json_build_object('pos',pos, 'type',type, 'color',color) as obj
  from images
  union all 
  select json_build_object('pos',pos, 'type',type, 'value',value) as obj
  from letters
)v

方法2:直接聚合行内的唯一列

如果不想额外加别名,用v.*提取行里的唯一列值,再聚合:

select json_agg(v.*)
from (
  select json_build_object('pos',pos, 'type',type, 'color',color)
  from images
  union all 
  select json_build_object('pos',pos, 'type',type, 'value',value)
  from letters
)v

两种方法都能得到你想要的[ {}, {} ]格式输出,区别只是是否显式给列起别名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 10:59:55