如何用PostgreSQL将单条记录转换为指定格式JSON?
PostgreSQL 实现行数据到指定JSON数组格式的转换
需求说明
现有数据表结构及数据如下:
| A | B | C | D |
|---|---|---|---|
| cat | cat2 | cat3 | cat4 |
需要将其转换为如下结构的JSON数组:
[ { "name":"A", "value":"cat", "type" : "String" }, { "name":"B", "value":"cat2", "type" : "String" }, { "name":"C", "value":"cat3", "type" : "String" }, { "name":"D", "value":"cat4", "type" : "String" } ]
实现查询语句
假设你的数据表名为test_table,可以使用PostgreSQL的JSON函数组合实现需求:
SELECT json_agg( json_build_object( 'name', key, 'value', value, 'type', 'String' ) ) AS json_result FROM test_table, json_each_text(row_to_json(test_table));
函数说明
row_to_json(test_table):将表中的一行数据转换为JSON对象,键为列名,值为对应单元格的内容。json_each_text(...):将上述JSON对象拆分为多行记录,每行包含key(原列名)和value(原单元格值)两个字段。json_build_object(...):按照需求构造单个JSON对象,固定type字段值为'String',name和value分别取拆分后的key和value。json_agg(...):将所有构造好的单个JSON对象聚合为一个JSON数组,得到最终结果。
注意事项
如果数据表中有多行数据,需要根据业务需求添加分组逻辑(例如使用GROUP BY),避免将所有行的结果合并到同一个数组中。
内容的提问来源于stack exchange,提问作者Jayaram Patibandla
相关产品推荐
相关产品推荐

