我有一个简单的ajax调用,看起来像这样:
var data = jQuery.parseJSON(response.d);
的response.d内容是:
response.d
{"d":"[[{\"ExtensionData\":{},\"categoryId\":\"Help\"}],{\"11\":\"This is 11\",\"10\":\"This is 10\",\"7\":\"This is 7\",\"6\":\"This is 6\",\"12\":\"This is 12\",\"5\":\"This is 5\",\"4\":\"This is 4\",\"2\":\"This is 2\",\"1\":\"This is 1\"}]"}
当我运行代码并查看包含哪些数据时,它看起来像这样:
…等等,您就明白了。为什么突然将其排序?如何关闭“自动分类”?
永远不能保证在JavaScript的反序列化和序列化之间保留对象键顺序。保证键顺序的唯一方法是提取对象的键并根据确定性标准对其进行排序,即,为了保证顺序,您必须使用数组。
编辑:
解决您的问题的一种可能的方法是 ,除了 服务器响应的键值集合(原始对象) 外 ,还包括一组对象键。通过遍历有序键,可以按所需顺序访问对象。
例如
var data = { values: { /* your original object here */ }, /* keep a record of key order and include the keys as an array in your response. That way you can guarantee order. */ keys: [11, 10, 7, 6, 12, 5, 4, 2, 1] }; data.keys.forEach(function (key) { var value = data.values[key]; /* do work here */ });