解决JSONObject.toJSONString()输出null的问题

 更新时间:2022年02月07日 10:35:30   作者:EmineWang  
这篇文章主要介绍了解决JSONObject.toJSONString()输出null的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

JSONObject.toJSONString()输出null

问题:fastjson的api种,jsonObject.toJsonString(),当值为null时,没打印出来

代码

        JSONObject jsonObject = new JSONObject();
        jsonObject.put("id",null);
        jsonObject.put("class","12");
        jsonObject.put("name","");
        // 使用默认序列化方式打印
        System.out.println(jsonObject.toJSONString());
        // 使用指定序列化方式
        System.out.println(jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue));

输出

      {"name":"","class":"12"}
     {"id":null,"name":"","class":"12"}

可以发现,使用默认方式时,id没有打印null,指定序列化SerializerFeature.WriteMapNullValue,会打印null

可以看到

在这里插入图片描述

看下SerializerFeature属性

名称含义
QuoteFieldNames输出key时是否使用双引号,默认为true
UseSingleQuotes使用单引号而不是双引号,默认为false
WriteMapNullValue是否输出值为null的字段,默认为false
WriteEnumUsingToStringEnum输出name()或者original,默认为false
SortField按字段名称排序后输出。默认为false
WriteTabAsSpecial把\t做转义输出,默认为false
PrettyForma结果是否格式化,默认为false
WriteClassName序列化时写入类型信息,默认为false。反序列化是需用到

不要盲目的使用JSONObject.toJSONString

JSONObject.toJSONString会默认执行你这个要解析的类中的所有get方法,很容易出现空指针异常,而应该换为gson.toJson()这个方法

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

相关文章

  • 使用FormData上传二进制文件、对象、对象数组方式

    使用FormData上传二进制文件、对象、对象数组方式

    这篇文章主要介绍了使用FormData上传二进制文件、对象、对象数组方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • java线程安全锁ReentrantReadWriteLock原理分析readLock

    java线程安全锁ReentrantReadWriteLock原理分析readLock

    这篇文章主要为大家介绍了java线程安全锁ReentrantReadWriteLock原理分析readLock,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • 基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器的方法

    基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器的方法

    ChatGPT是一款基于自然语言处理技术的聊天机器人,ChatGPT可以模拟真实的人类对话,并能够更贴近用户的需求,提供更有价值的服务,这篇文章主要介绍了基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器,需要的朋友可以参考下
    2023-02-02
  • java实现简单日期计算功能

    java实现简单日期计算功能

    这篇文章主要为大家详细介绍了java实现简单日期计算功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Java异常处理深入理解

    Java异常处理深入理解

    这篇文章主要介绍了java项目常用异常处理汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2021-07-07
  • Java InheritableThreadLocal使用示例详解

    Java InheritableThreadLocal使用示例详解

    InheritableThreadLocal继承了ThreadLocal,此类扩展了ThreadLocal以提供从父线程到子线程的值的继承:当创建子线程时,子线程接收父线程具有的所有可继承线程局部变量的初始值。 通常子线程的值与父线程的值是一致的
    2022-09-09
  • java WebSocket 服务端实现代码

    java WebSocket 服务端实现代码

    WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端,这篇文章主要介绍了java WebSocket 服务端代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Java实现布隆过滤器的示例详解

    Java实现布隆过滤器的示例详解

    布隆过滤器(Bloom Filter)是1970年由布隆提出来的,实际上是由一个很长的二进制数组+一系列hash算法映射函数,用于判断一个元素是否存在于集合中。本文主要介绍了Java实现布隆过滤器的示例代码,希望对大家有所帮助
    2023-03-03
  • Java 解析Markdown文档格式的两种方式

    Java 解析Markdown文档格式的两种方式

    CommonMark和Flexmark是两种用于解析Markdown文档的Java库,CommonMark提供了一种简洁和一致的Markdown格式语法规范,但不支持目录解析,而Flexmark是一个基于CommonMark的扩展库,不仅遵循了CommonMark规范,还提供了更多灵活的API和扩展功能
    2024-10-10
  • java.io.UncheckedIOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081问题

    java.io.UncheckedIOException: Cannot delete C

    本文主要介绍了java.io.UncheckedIOException: Cannot delete C:\Users\guo\AppData\Local\Temp\tomcat.8081问题,具有一定的参考价值,感兴趣的可以了解一下
    2024-05-05

最新评论