如何从Javascript解析JSON时维护顺序?

如何从Javascript解析JSON时维护顺序?

问题描述:

我发送我的页面的数据以JSON编码,使用Javascript解析,然后使用循环显示在HTML SELECT元素中。数据到达已经排序,但我在解码JSON字符串时保持正确顺序的问题,这会使应用于数据的排序无效。如何从Javascript解析JSON时维护顺序?

的样本数据:{"test":{"4":"first","5":"second","3":"third"}}

使用jQuery的JSON解析器和Javascript的eval()函数,我得到的结果如下:

{"test":{"3":"third","4":"first","5":"second"}}

这是不可能修改数据的格式和键(“4”,“5”,“3”)必须保持相同的顺序。真实的数据要复杂得多,但这个例子很好地说明了我的问题。

当从Javascript解析它时,如何维护JSON数据的顺序?

+2

当您使用属性(对象字面量)时,您不应该依赖订单。只有数组(在JavaScript和JSON中)保持顺序。 – 2012-04-05 19:20:08

+0

让我困扰的是,http://json.parser.online.fr/上的自定义JSON解析器工作得很好。可悲的是,我无法修改数据的格式,或者我会使用数组。 :( – Wolf 2012-04-05 19:21:33

+1

你应该抱怨谁做这个数据,他们做了一个糟糕的工作设计JSON表示。如果订单是重要的一个对象不应该使用。 – Phrogz 2012-04-05 19:25:32

如果要保留订单,请使用数组。这应该是在JavaScript中维护订单的唯一方法。

+1

这是不可能的修改数据的格式,不幸的是: – Wolf 2012-04-05 19:20:16

+2

@Wolf然后你需要自己手动解析它,保存一个数组,除了存储属性顺序的数据之外,JavaScript并不保证迭代一个物体的顺序 – Phrogz 2012-04-05 19:21:10

+0

@Progroz我希望有一个现成的解决方案,但我想自制必须走的路,我会给这个问题一些时间e,也许有人会想出一些东西。 – Wolf 2012-04-05 19:23:21