小编典典

ParseJSON对我的json数据进行排序

ajax

我有一个简单的ajax调用,看起来像这样:

var data = jQuery.parseJSON(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\"}]"}

当我运行代码并查看包含哪些数据时,它看起来像这样:

  1. “这是1”
  2. “这是2”
  3. “这是3”
  4. “这是4”
  5. “这是5”
  6. “这是6”

…等等,您就明白了。为什么突然将其排序?如何关闭“自动分类”?


阅读 440

收藏
2020-07-26

共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 */
});
2020-07-26