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

PostgreSQL如何将表行的每列转换为独立JSON对象组成的数组

解法1:手动指定列名(性能最优,适合列固定的场景)

直接通过jsonb_build_object为每个属性单独构造JSON对象,再用jsonb_build_array拼接为数组即可:

SELECT 
    jsonb_build_array(
        jsonb_build_object('attribute1', attribute1),
        jsonb_build_object('attribute2', attribute2),
        jsonb_build_object('attribute3', attribute3)
    ) AS target_json
FROM itemmaster
WHERE id = 1;

执行后得到的结果就是你需要的[{"attribute1":"Good"},{"attribute2":"Average"},{"attribute3":"Best"}]格式。

解法2:动态适配列(无需硬编码列名,适合列多/列易变动的场景)

如果属性列数量多,或者后续可能新增属性,可以用行转列+聚合的方式自动适配,自动排除不需要的id字段:

SELECT jsonb_agg(jsonb_build_object(key, value)) AS target_json
FROM itemmaster i
-- to_jsonb(i)将整行转为JSON对象,- 'id'移除不需要的id字段
CROSS JOIN jsonb_each_text(to_jsonb(i) - 'id')
WHERE id = 1;

如果你使用的是PostgreSQL 10及以下版本,把jsonb相关函数替换为json对应函数(json_build_array/json_build_object/json_each_text/json_agg)即可得到相同效果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 18:18:03