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

如何在PostgreSQL的jsonb_build_object中保留字段顺序?

解决PostgreSQL中jsonb_build_object保留字段顺序的问题

PostgreSQL的jsonb类型本身是无序的键值对集合,jsonb_build_object函数会自动按键的字母顺序排序输出,这就是你得到{"value": "xxx", "system": "sss"}的原因。

以下是两种解决方法:

  • 直接使用json_build_object(返回json类型)
    json类型会严格保留字段传入顺序,执行以下语句即可得到你需要的结果:

    SELECT json_build_object(
        'system', 'sss',
        'value', 'xxx');
    

    输出结果:{"system": "sss", "value": "xxx"}

  • 转成jsonb类型(若必须用jsonb)
    先通过json_build_object生成有序的json,再转换为jsonb:

    SELECT to_jsonb(json_build_object(
        'system', 'sss',
        'value', 'xxx'));
    

    或者简化写法:

    SELECT json_build_object(
        'system', 'sss',
        'value', 'xxx')::jsonb;
    

注:jsonb内部存储依然是无序的,但通过上述转换后,输出时会保留原json的字段顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:32:33