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

