You need to enable JavaScript to run this app. PostgreSQL 如何将表两列转为键值对生成单个JSON对象
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL 如何将表两列转为键值对生成单个JSON对象

问题修正方案

原有查询得到数组结果的原因是:jsonb_agg会将传入的多行JSON值聚合为JSON数组,你逐行构造单键JSON对象的写法,最终必然得到数组结构,和单对象的需求不匹配。
直接使用PostgreSQL专为键值对聚合设计的jsonb_object_agg函数即可:

SELECT jsonb_object_agg(repliesto, devicetokens) FROM devices;

实际输出验证

针对你给出的样例表数据,上述语句的返回结果完全匹配目标格式:

{"user1": ["a"], "user2": ["b","c"]}

函数会自动完成PostgreSQL数组类型到JSON数组的转换,不需要额外编写类型适配逻辑。

边界场景处理

如果设备表没有任何数据,上述语句会返回null。如果需要空表场景下返回空JSON对象作为兜底,可以调整语句为:

SELECT COALESCE(jsonb_object_agg(repliesto, devicetokens), '{}'::jsonb)
FROM devices;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.24 17:15:00