jQuery parseJSON不保持json键的顺序

时间:2015-05-14 04:55:58

标签: javascript jquery json

Json string:

"{"detail":{"01":0,"02":0,"03":0,"04":0,"05":"-","06":"-","07":"-","08":"-","09":"-","10":"-","11":"-","12":"-"}}"

jQuery.parseJSON结果:

{detail:{10:"-", 11:"-", 12:"-", '01':0, '02':0, '03':0, '04':0, '05':"-", '06':"-", '07':"-", '08':"-", '09':"-"}}

我不知道为什么parseJSON改变了键的顺序(10,11,12,01,02,...而不是01,02,03,......)。在这种情况下如何保留订单?

1 个答案:

答案 0 :(得分:1)

  

我不知道为什么parseJSON会改变键的顺序(10,11,12,01,02,...而不是01,02,03,......)。

大多数浏览器按以下顺序迭代属性:

  • 整数索引(*)按升序排列
  • 创建顺序中的字符串

*:正32位整数被认为是整数索引

但是,语言标准是特定于实现的,而不是必需的。可能存在完全不同行为的环境。

(相关:W3 recommendation

首先列出101112,因为它们是整数。 0102等正在关注,因为它们被视为字符串。

  

在这种情况下如何保留订单?

你做不到。你必须使用一个数组,在你的情况下这应该是相当简单的,因为你的密钥基本上是连续的数字。