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

PostgreSQL生成目标JSON格式失败,为何得到错误结果?

PostgreSQL生成JSON响应不符合预期的错误原因

核心错误点

  • 未做分组聚合:如果直接对表中每行单独调用json_build_object,没有结合GROUP BY和聚合函数(如json_agg),会导致每行输出一个独立的JSON对象,无法将所有区域数据合并到同一个数组中。
  • 数组与对象的构造逻辑错误:若直接用json_build_array(region)包裹字段值,得到的是字符串数组而非对象数组。正确的做法是先将单个区域数据封装为对象(如json_build_object('region_name', region)),再聚合为数组。
  • 顶层结构缺失或错误:如果没有将聚合后的数组嵌套到指定的顶层键(如regions)中,或者每行单独生成不完整的结构,会导致输出不符合预期的JSON格式。

错误示例与修正

错误查询(每行返回独立JSON,内部为字符串数组)

SELECT json_build_object('regions', json_build_array(region))
FROM info;

该查询会为info表的每一行生成一个类似{"regions": ["北京"]}的独立JSON,而非将所有区域合并为一个数组。

正确查询(生成含区域对象数组的JSON)

如果要生成包含所有区域对象的单个JSON响应:

SELECT json_build_object('regions', json_agg(json_build_object('region', region)))
FROM info;

如果需要按kod_id分组,每个分组对应一个区域数组:

SELECT kod_id, json_build_object('regions', json_agg(json_build_object('region', region)))
FROM info
GROUP BY kod_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 21:36:05