打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
使用JSON.toJSONString中序列化空字符串遇到的坑
FastJson简介fastjson是由alibaba开源的一套json处理器。与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势


1.使用 JSON.toJSONString 竟然也有坑

今天,在对对象转成JsonString的时候,对象有三个属性,其中两个有内容,一个为 null

踩坑实例


这里箭头指向的位置,因为 sent-1 中的 value为空 ,所以并未打印出来。

第二个使用:

JSON.toJSONString(map, SerializerFeature.WriteMapNullValue) 

指定序列化方式就打印出来了。


2.将对象转换成 JsonString 在fastJson 中有两种方式

  1. 通过 JSON.toJSONString
  2. 通过 JSONObject.toJSONString


3. WriteNullStringAsEmpty 和 WriteMapNullValue 均可以将为 null 的属性显示出来 , 而不是默认被忽略掉

    System.out.println(JSON.toJSONString(message, SerializerFeature.WriteNullStringAsEmpty));    System.out.println(JSON.toJSONString(message,SerializerFeature.WriteMapNullValue));        {"data":null,"msg":" lankerens.com"}    {"data":null,"msg":" lankerens.com"}



4.对规则的理解:⭐

SerializerFeature.WriteMapNullValue 

是否输出值为 null 的字段, 默认为false

也就是说有null时会输出而不是忽略(默认策略是忽略,所以看不到为null的字段)


SerializerFeature.WriteNullStringAsEmpty

字符类型字段如果为null,输出为 ”“ , 而非null

注意是字段是字段是字段 (即 属性 ),而不是 json.put("key",null),所以用它时,字段为null的可以转换为空字符串


如果让输出的json中所有为null的字符串都变成空字符串,最简单的做法就是加一个值过滤器,这样就避免了有的字段为null,有的字段为空字符的现象。


    String a = null;    System.out.println(JSON.toJSONString(a, SerializerFeature.WriteNullStringAsEmpty));        {"a":""} / 而不是 {"a":null}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mybatis 通过Map,NULl字段不反回解决
Fastjson介绍
SpringMVC在循环引用时出现bug的问题探讨
Ajax学习(6)
Java 中 JSON 的使用
ASP.NET MVC 中解决api请求参数为空字符串时后台接收为null的问题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服