Mysql 5.7原生json支持 - 在json_insert函数中控制键顺序

时间:2016-08-12 05:59:06

标签: json mysql-5.7

我在使用json_insert函数插入时遇到了json键排序的问题。

我的分类记录如下

“AIR”,“AIR Express”

“CFR”,“成本和运费”

“FH”,“自由之家”

“联合国”,“联合国”

“UPS”,“联合包裹服务”

使用json_insert函数将上述记录转换为json后,我看到的结果如下

{“FH”:“Free house”,“UN”:“United Nations”,“AIR”:“AIR Express”,“CFR”:“Cost and Freight”,“UPS”:“United Parcel Service” }

但我希望json按照我插入的顺序维护密钥。虽然我可以感觉到它正在尝试根据键的字符长度来维护顺序。但是我怎么能摆脱按顺序排列的键。

2 个答案:

答案 0 :(得分:5)

很难过,但现在无法保留原始按键顺序。

Normalization, Merging, and Autowrapping of JSON Values

  

MySQL执行的规范化也会对JSON对象的键进行排序(以便使查找更有效)。此排序的结果可能会发生变化,并且不保证在各个版本中保持一致。此外,原始文档中的键,值或元素之间的额外空格将被丢弃。

答案 1 :(得分:-1)

我有同样的问题,通过与社区交谈找到解决这个问题的正确方法是为对象上的每个键添加一个额外的值,这是最正确的方法。基于您的代码的较短示例,您可以做到
{“ 1 :FH”:“Free house”,“ 2 :UN”:“United Nations”,“ 3 :AIR”: “AIR Express”,“ 4 :CFR”:“成本和运费”,“ 5 :UPS”:“联合包裹服务”}

然后通过这些额外的值,您可以对键的位置进行排序,您可以通过许多其他方式对此进行排序,如果您或其他人对这种关键分拣方式感兴趣,请告诉我,我将说明如何,在JS或PHP上。 干杯!