JSONObject按put顺序排放与输出方式

 更新时间:2021年08月10日 16:42:06   作者:两两翅膀  
这篇文章主要介绍了JSONObject按put顺序排放与输出方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JSONObject按put顺序排放与输出

JSONObject put数据之后,排序会发生变化

例如

JSONObject object=new JSONObject();  
object.put("aaa",111);  
object.put("bbb",222);  
object.put("ccc",333); 
object.put("ddd",444); 

输出结果可能为

{"aaa":111,"ddd":444,"ccc":333,"bbb":222}

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

public JSONObject() {  
        this.map = new LinkedHashMap();  //new HashMap();  
}  

即定义JsonObject可以这样:JSONObject jsonObj =new JSONObject(new LinkedHashMap());

JSONObject object=new JSONObject(new LinkedHashMap());
object.put("aaa",111);  
object.put("bbb",222);  
object.put("ccc",333); 
object.put("ddd",444); 

再次输出就会按顺序排了。

不知道大家想要的结果得到了没,反正我想要的结果已经得到。不解释,看下图--------->

JSONObject.put 的坑

net.sf.json.JSONObject
String timelineContent=一个json
Json.put("timelineContent",timelineContent);

此时框架会自动将String类型的timelineContent当Json put进去。。。

然后因为接口要求String不要JsonObject,就报

{"errorCode":-1,"errorMessage":"Internal Server Error","exceptionClassName":"org.springframework.http.converter.HttpMessageNotReadableException","exceptionMessage":"JSON parse error: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `java.lang.String` out of START_OBJECT token\n at [Source: (PushbackInputStream); line: 1, column: 397] (through reference chain: java.util.ArrayList[0]->com.homethy.persistence.domain.LeadTimeline[\"timelineContent\"])","exceptionTime":"2019-06-19 08:59:12"}

没找指定类型为String不做转换的方法

暂时解决办法

Json.put("timelineContent",timelineContent==null?null:" "+timelineContent);

然后接口方就能正确识别了。。。

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

相关文章

  • 解决BeanUtils.copyProperties无法成功封装的问题

    解决BeanUtils.copyProperties无法成功封装的问题

    这篇文章主要介绍了解决BeanUtils.copyProperties无法成功封装的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • IDEA code template配置和参数方式

    IDEA code template配置和参数方式

    这篇文章主要介绍了IDEA code template配置和参数方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教<BR>
    2024-01-01
  • java语法糖之jdk迭代的新特性汇总

    java语法糖之jdk迭代的新特性汇总

    什么是语法糖?泛型、自动装箱拆箱、变长参数、增强for循环、switch字符类型、lambda表达式等,这些其实都是语法糖。这篇文章主要给大家介绍了关于java语法糖之jdk迭代的新特性的相关资料,需要的朋友可以参考下
    2021-05-05
  • 非常详细的Java异常处理机制知识整理大全

    非常详细的Java异常处理机制知识整理大全

    Java异常指在程序运行时可能出现的一些错误,比如试图打开一个根本不存在的文件等,异常处理将会改变程序的控制流程,让程序有机会对错误做出处理,下面这篇文章主要给大家介绍了关于Java异常处理机制知识整理的相关资料,需要的朋友可以参考下
    2022-11-11
  • MyBatis中的关联关系配置与多表查询的操作代码

    MyBatis中的关联关系配置与多表查询的操作代码

    本文介绍了在MyBatis中配置和使用一对多和多对多关系的方法,通过合理的实体类设计、Mapper接口和XML文件的配置,我们可以方便地进行多表查询,并丰富了应用程序的功能和灵活性,需要的朋友可以参考下
    2023-09-09
  • Idea springboot springCloud热加载热调试两种常用方式

    Idea springboot springCloud热加载热调试两种常用方式

    这篇文章主要介绍了Idea springboot springCloud热加载热调试常用的两种方式,在项目开发的过程中,需要修改调试的时候偶每次都需要重启项目浪费时间,下面是我整理的两种常用的两种方式,需要的朋友可以参考下
    2023-04-04
  • SpringBoot整合Scala构建Web服务的方法

    SpringBoot整合Scala构建Web服务的方法

    这篇文章主要介绍了SpringBoot整合Scala构建Web服务的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • 一文了解Seata的实现原理

    一文了解Seata的实现原理

    随着业务发展,单体系统逐渐无法满足业务的需求,分布式架构逐渐成为大型互联网平台首选。伴随而来的问题是,本地事务方案已经无法满足,分布式事务相关规范和框架应运而生。本文主要介绍Seata的实现原理
    2021-06-06
  • SpringBoot实现application.yml文件敏感信息加密

    SpringBoot实现application.yml文件敏感信息加密

    本文主要介绍了SpringBoot实现application.yml文件敏感信息加密,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • mybatis和mybatis-plus同时使用的坑

    mybatis和mybatis-plus同时使用的坑

    本文主要介绍了mybatis和mybatis-plus同时使用的坑,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05

最新评论