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
相关产品推荐
相关产品推荐

