自学内容网 自学内容网

记录一次Chrome浏览器自动排序ajax请求的JSON数据问题

1.前言

作者作为新人入职的第一天,mentor给了一个维护公司运营平台的小需求,具体需求是根据运营平台的某个管理模块所展示记录的某些字段对展示记录做排序。
第一步: mybatis plus组装排序查询sql,得到排序后的展示记录
第二步: 使用LinkedHashMap根据插入顺序排序,装载展示记录后转成json返回给前端(key为记录的id)
最终展示在Chrome浏览器的结果是未排序的原始数据,相当于我查询时候的排序白做了。

2. 为什么会这样?

这主要是因为ECMAScript 6(ES6)规范中明确定义了对象属性的枚举顺序。当对象的属性名都是数字或字符串时,这些属性会按照属性名在字符编码中的顺序进行排序。Chrome浏览器遵循了这一规范,因此在处理JSON数据时会自动按键值排序。
假设你原来的JSON数据是这样的:

{
    "4": "444",
    "1": "111",
    "6": "66",
    "9": "9"
}

浏览器会自动将其排序为:

{
    "1": "111",
    "4": "444",
    "6": "66",
    "9": "9"
}

3.如何解决?

我的解决方案是修改数据结构,避免使用直接以数字或字符串作为键的对象。数据结构转为List结构,其中每个元素都是一个包含键值对的对象。这样,自己就可以控制数据的顺序,而不用担心浏览器会自动排序。
json格式如下:

[
    {"id": 4, "name": "444"},
    {"id": 1, "name": "111"},
    {"id": 6, "name": "66"},
    {"id": 9, "name": "9"}
]

啊啊啊啊啊啊,一开始没忘这方面想,硬控我好久。。。。。,希望能够帮助到后面遇到相同问题的朋友


原文地址:https://blog.csdn.net/m0_51963973/article/details/140121704

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!