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

PostgreSQL连接查询如何返回JSON格式结果?

解决PostgreSQL关联查询返回JSON格式结果的问题

你原来的SELECT to_json(table1) FROM table1能直接将单表行转为结构化JSON,但关联查询后,结果集不再是table1的单一行对象,直接用to_json自然失效。以下几种方法可以实现类似的JSON返回效果:

方法1:构造行对象并转JSON

用row()函数将选定字段封装为行对象,再通过to_json转换。如果需要保留自定义字段名,可给行内字段指定别名:

SELECT to_json(row(field1 AS field1, field2 AS field2, table2field1 AS table2field1)) 
FROM table1 INNER JOIN table2 ON field1 = table2id;

这样每一行都会返回一个包含指定字段的JSON对象,和原查询的单条JSON结构一致。

方法2:用json_build_object明确构造JSON键值对

这种方式更直观,能精准控制JSON的键名和对应字段:

SELECT json_build_object(
    'field1', field1,
    'field2', field2,
    'table2field1', table2field1
) 
FROM table1 INNER JOIN table2 ON field1 = table2id;

返回的每条结果都是结构清晰的JSON对象,键名完全由你定义。

方法3:返回包含所有行的JSON数组

如果需要像原查询返回整个表那样,把所有结果打包成一个JSON数组,可结合json_agg函数:

SELECT json_agg(json_build_object(
    'field1', field1,
    'field2', field2,
    'table2field1', table2field1
)) 
FROM table1 INNER JOIN table2 ON field1 = table2id;

执行后会得到一个包含所有关联结果行的JSON数组,整体结构和原查询返回整个表的风格一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 00:20:56