当前位置: 首页 > wzjs >正文

做网站ps分辨率给多少泰州百度seo公司

做网站ps分辨率给多少,泰州百度seo公司,开网络公司的小说,做网站新乡博主介绍:✌全网粉丝22W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

博主介绍:✌全网粉丝22W+,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌

技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物联网、机器学习等设计与开发。

感兴趣的可以先关注收藏起来,在工作中、生活上等遇到相关问题都可以给我留言咨询,希望帮助更多的人。

Spring Boot 返回排序后的 Map 但前端接收顺序不对的解决方案

  • 一、背景描述
  • 二、问题原因
  • 三、解决方案
    • 3.1 方案1:使用有序集合代替 Map(推荐)
    • 3.2 方案2:使用自定义对象包装
    • 3.3 方案3:确保使用正确的 Map 实现类
    • 3.4 方案4:前端处理方案
  • 四、最佳实践建议
  • 五、拓展:为什么LinkedHashMap有时也不起作用?

一、背景描述

返回给页面的VO中有一个List和一个Map,两个属性,而且都需要排序后返回,现象是List排序结果在页面中显示正常,而Map排序结果在页面中显示跟在服务器中排序后的不同。这就奇了怪了,明明是处理好排序后才返回给页面的,但是页面接收后就顺序不一致了。

二、问题原因

  • Map 的实现类问题:即使你使用了 LinkedHashMap 保持顺序,在 JSON 序列化过程中可能会丢失顺序
  • JSON 规范:标准的 JSON 对象本身是无序的键值对集合
  • 前端处理:JavaScript 的 JSON.parse() 默认不保证对象属性的顺序

三、解决方案

3.1 方案1:使用有序集合代替 Map(推荐)

@GetMapping("/sorted-data")
public ResponseEntity<List<Map.Entry<String, Object>>> getSortedData() {Map<String, Object> data = new LinkedHashMap<>();// 添加数据并排序data.put("A", 1);data.put("B", 2);data.put("C", 3);// 转换为保持顺序的Entry列表List<Map.Entry<String, Object>> sortedList = new ArrayList<>(data.entrySet());return ResponseEntity.ok(sortedList);
}

前端将收到类似这样的结构:

[{"key": "A", "value": 1},{"key": "B", "value": 2},{"key": "C", "value": 3}
]

3.2 方案2:使用自定义对象包装

@Data // Lombok 注解
public class KeyValuePair {private String key;private Object value;// 构造方法
}@GetMapping("/sorted-data")
public ResponseEntity<List<KeyValuePair>> getSortedData() {Map<String, Object> data = new LinkedHashMap<>();// 添加数据data.put("A", 1);data.put("B", 2);data.put("C", 3);// 转换为KeyValuePair列表List<KeyValuePair> result = data.entrySet().stream().map(e -> new KeyValuePair(e.getKey(), e.getValue())).collect(Collectors.toList());return ResponseEntity.ok(result);
}

3.3 方案3:确保使用正确的 Map 实现类

@GetMapping("/sorted-data")
public ResponseEntity<Map<String, Object>> getSortedData() {// 使用LinkedHashMap保持插入顺序Map<String, Object> data = new LinkedHashMap<>();// 添加数据(已排序)data.put("A", 1);data.put("B", 2);data.put("C", 3);// 配置Jackson保留Map顺序ObjectMapper mapper = new ObjectMapper();mapper.enable(SerializationFeature.INDENT_OUTPUT);mapper.configure(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY, false);return ResponseEntity.ok(data);
}

3.4 方案4:前端处理方案

如果必须返回 Map,可以在前端处理:

// 假设后端返回的是保持顺序的LinkedHashMap序列化的JSON
fetch('/api/sorted-data').then(response => response.json()).then(data => {// 转换为数组保持顺序const sortedArray = Object.entries(data);console.log(sortedArray); // 这会保持顺序});

四、最佳实践建议

  1. 推荐使用方案1或方案2:返回 List<Entry>List<自定义对象> 是最可靠的方式
  2. 避免依赖JSON对象的属性顺序:这是不符合JSON规范的
  3. 如果需要严格顺序:可以在数据结构中包含顺序字段
@Data
public class OrderedItem {private int order;private String key;private Object value;// 构造方法
}@GetMapping("/sorted-data")
public ResponseEntity<List<OrderedItem>> getSortedData() {// 实现...
}

五、拓展:为什么LinkedHashMap有时也不起作用?

即使在Java端使用了LinkedHashMap,以下情况仍可能导致顺序丢失:

  1. 某些JSON库可能不保留Map顺序
  2. 前端JavaScript引擎对对象属性的处理
  3. 中间件(如网关、代理)可能重新序列化JSON

因此,使用有序的列表结构是最可靠的跨平台解决方案。


好了,今天分享到这里。希望你喜欢这次的探索之旅!不要忘记 “点赞” 和 “关注” 哦,我们下次见!🎈

本文完结!

祝各位大佬和小伙伴身体健康,万事如意,发财暴富,扫下方二维码与我一起交流!!!在这里插入图片描述

http://www.dtcms.com/wzjs/175305.html

相关文章:

  • 如何申请微信企业号seo关键词排名优化手机
  • jQuery网站建设中倒计时代码市场调研报告ppt
  • 搭建微信小程序需要什么东莞seo计费
  • 做网站在什么地方找2022最新免费的推广引流软件
  • 五金制品网站源码太原百度seo排名
  • 南联网站建设哪家好b2b平台有哪几个
  • 南昌电商网站设计手机优化软件排名
  • 网站更新文章首页不显示seo性能优化
  • 北京和君网站建设某个产品营销推广方案
  • 帮人做诈骗网站获利35万退赃部分深圳百度推广
  • 怎么做租房网站百度竞价点击神器奔奔
  • 泰安个人代做网站永久免费域名申请
  • 权威的企业网站建设seo综合查询怎么用的
  • 有哪些网站可以做推广包包软文营销软文推广
  • 网站建设 你真的懂吗收录优美图片官网
  • wordpress视频优化seo网站优化专员
  • 江西房地产网站建设八种营销模式
  • 山东做网站建设的好公司免费做网站的平台
  • 辽宁省建设工程信息网必须用主锁网站快速排名优化哪家好
  • wordpress 表单 采集上海网优化seo公司
  • 公司网站如何做seo惠州seo关键字排名
  • wordpress怎样建站必应搜索引擎怎么样
  • 电子商务网站建设与管理的论文北京seo设计公司
  • 网站建设企业推荐重庆森林影评
  • 网站建设委托合同关键词优化seo优化排名
  • 自己做的网站让别人看到查图百度识图
  • 网站架构技术友情链接的作用有哪些
  • 天津河西做网站贵吗抖音广告怎么投放
  • 加强网站建设管理 及时更新媒体发布公司
  • 树状菜单网站乐陵seo外包公司