当前位置: 首页 > 面试题库 >

ParseJSON对我的json数据进行排序

李泓
2023-03-14
问题内容

我有一个简单的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”

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


问题答案:

永远不能保证在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 */
});


 类似资料:
  • 我有学生(弦)和老师(弦列表)。我想根据讲师人数按降序提取记录。讲师如下示例:[a、b、c]-3、[e、f]-2、[g、h、i、j]-4。 我要按4,3,2的顺序。 这取决于现场讲师阵列的大小。如何使用mongoTemplate或自定义mongodb查询或聚合进行查询??

  • 编辑:对于同样的问题,我尝试编写一个比较器。但它不起作用

  • 问题内容: 我有一个组合框,可在更改时触发jquery函数,它调用php脚本,该脚本从数据库中获取按名称而不是按ID(表城市)排序的结果,并创建一个具有ID和城市名称的json文件。该问题带有$ .getJSON(url,data)函数,它可以很好地检索所有json编码的数据,但似乎是通过id自动对数据进行排序 例如,如果php页面生成 jQuery getJSON之后,它按ID排序 有没有办法禁

  • 问题内容: 例如具有以下代码: 我如何排序此json这样- 我用ID对用户进行了排序。. 我不知道如何在javascript中执行此操作。 问题答案: 首先,这 不是 JSON。这是一个JavaScript对象文字。JSON是数据的 字符串表示 形式,它恰好非常类似于JavaScript语法。 其次,您有一个对象。他们没有排序。不能保证元素的顺序。如果要保证顺序,则 需要 使用数组。这将需要您更改

  • 问题内容: 每次使用时,我都会按字母顺序对JSON键进行排序。我不希望按键排序。我可以禁用在中进行的排序吗? 问题答案: 是的,您可以使用以下属性对此进行修改: 但是,请注意,在文档中明确警告不要这样做: 默认情况下,Flask将以对密钥进行排序的方式序列化JSON对象。这样做是为了确保独立于字典的哈希种子,返回值将保持一致,以免浪费外部HTTP缓存。您可以通过更改此变量来覆盖默认行为。不建议这样

  • 每次使用时,我都将JSON键按字母顺序排序。我不想把钥匙整理好。我可以禁用在中完成的排序吗?