8

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

我有如下排序的记录

“航空”、“航空快递”

“CFR”、“成本和运费”

“FH”、“自由之家”

“联合国”、“联合国”

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

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

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

但我希望 json 按照我插入的顺序维护密钥。尽管我可以感觉到它正在尝试根据键的字符长度来维护顺序。但是我怎样才能摆脱让键按顺序对齐。

4

2 回答 2

10

这很可悲,但现在没有办法保持原始键的顺序。

JSON 值的规范化、合并和自动包装

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

于 2016-12-06T04:13:08.270 回答
-1

我有同样的问题,我通过与社区交谈发现解决这个问题的正确方法是为对象上的每个键添加一个额外的值,这是最正确的方法。基于您的代码的较短示例,您可以执行

{" 1 :FH":"Free house", " 2 :UN": "United Nations", " 3 :AIR": "AIR Express", " 4 :CFR" : "成本加运费", " 5 :UPS": "United Parcel Service"}

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

于 2017-09-14T16:08:46.603 回答