解决String字符串转JSONObject顺序不对的问题

 更新时间:2023年12月08日 08:39:08   作者:qq_35008710  
这篇文章主要介绍了解决String字符串转JSONObject顺序不对的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

String字符串转JSONObject顺序不对

String goodsSpec={"21445":"套装德绒紫","21447":"S"}

普通模式

JSONObject jsonObject = JSONObject.parseObject(json);或JSONObject goodsSpecs = jsonObject.getJSONObject(goodsSpec);

转换返回

{"21447":"S","21445":"套装德绒紫"}

原因

JsonObject内部是用Hashmap来存储的,所以输出是按key的排序来的,如果要让JsonObject按固定顺序(put的顺序)排列,可以修改JsonObject的定义HashMap改为LinkedHashMap

json解析的时候,通常顺序会发生改变,如果我们有保持原有顺序的需求的话可以通过如下方式

1、使用fastJson的Feature.OrderedField

JSONObject respJson = JSONObject.parseObject(jsonStr, Feature.OrderedField);

2、初始化JSONObject的时候

JSONObject(boolean ordered);

3、可以使用Google的Gson,使用gson解析的话是怎么传就是什么顺序

JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject();
LinkedHashMap<String, Object> jsonMap = JSON.parseObject(goodsSpec,LinkedHashMap.class, Feature.OrderedField);
JSONObject goodsSpecs = new JSONObject(true);
goodsSpecs.putAll(jsonMap);

最终结果

{"21445":"套装德绒紫","21447":"S"}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java中JFinal框架动态切换数据库的方法

    Java中JFinal框架动态切换数据库的方法

    这篇文章主要介绍了Java中JFinal框架动态切换数据库的方法,本文通过两种方法结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • mybatis 返回Map类型key改为小写的操作

    mybatis 返回Map类型key改为小写的操作

    这篇文章主要介绍了mybatis 返回Map类型key改为小写的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 字节二面SpringBoot可以同时处理多少请求

    字节二面SpringBoot可以同时处理多少请求

    这篇文章主要为大家介绍了字节二面之SpringBoot可以同时处理多少请求面试分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • Mybatis使用大于等于或小于等于进行比较

    Mybatis使用大于等于或小于等于进行比较

    本文主要介绍了Mybatis使用大于等于或小于等于进行比较,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • spring boot加载freemarker模板路径的方法

    spring boot加载freemarker模板路径的方法

    这篇文章主要介绍了spring boot加载freemarker模板路径的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java调用打印机的2种方式举例(无驱/有驱)

    Java调用打印机的2种方式举例(无驱/有驱)

    我们平时使用某些软件或者在超市购物的时候都会发现可以使用打印机进行打印,这篇文章主要给大家介绍了关于Java调用打印机的2种方式,分别是无驱/有驱的相关资料,需要的朋友可以参考下
    2023-11-11
  • SpringBoot接口路径重复,启动服务器失败的解决

    SpringBoot接口路径重复,启动服务器失败的解决

    这篇文章主要介绍了SpringBoot接口路径重复,启动服务器失败的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • springboot+vue实现Token自动续期(双Token方案)

    springboot+vue实现Token自动续期(双Token方案)

    双Token方案通过访问令牌和刷新令牌提高用户登录安全性和体验,访问令牌有效期短,包含用户信息,用于请求校验,本文就来介绍一下springboot+vue实现Token自动续期(双Token方案),感兴趣的可以了解一下
    2024-10-10
  • Java分布式学习之Kafka消息队列

    Java分布式学习之Kafka消息队列

    Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据
    2022-07-07
  • Java 8 开发的 Mybatis 注解代码生成工具

    Java 8 开发的 Mybatis 注解代码生成工具

    MybatisAnnotationTools 是基于 Java8 开发的一款可以用于自动化生成 MyBatis 注解类的工具,支持配置数据源、类路径,表名去前缀、指定类名前后缀等功能.这篇文章主要介绍了Java 8 开发的 Mybatis 注解代码生成工具 ,需要的朋友可以参考下
    2019-07-07

最新评论