【问题标题】:jQuery parseJSON not keep order of json keysjQuery parseJSON 不保持 json 键的顺序
【发布时间】:2015-05-14 04:55:57
【问题描述】:

Json 字符串:

"{"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,...)。在这种情况下如何保持订单?

【问题讨论】:

  • 答案很简单....对象没有顺序。如果顺序和排序很重要,请使用数组
  • 为您找到了一些东西here 以支持@charlietfl 的评论..
  • 谢谢你,@charlietfl,Guruprasad Rao

标签: javascript jquery json


【解决方案1】:

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

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

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

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

但是,它是特定于实现的,语言标准不要求。可能存在具有完全不同行为的环境。

(相关:Does ES6 introduce a well-defined order of enumeration for object properties?

所以101112 列在最前面,因为它们是整数。 0102 等正在关注,因为它们被视为字符串。

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

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

【讨论】:

  • 我知道我的问题。非常感谢您,Felix Kling。
猜你喜欢
  • 2011-05-29
  • 2018-11-02
  • 2017-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多