FastJson简介
fastjson是由alibaba开源的一套json处理器。
与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势
1.使用 JSON.toJSONString
竟然也有坑
今天,在对对象转成JsonString的时候,对象有三个属性,其中两个有内容,一个为 null
踩坑实例
这里箭头指向的位置,因为 sent-1
中的 value为空
,所以并未打印出来。
第二个使用:
JSON.toJSONString(map, SerializerFeature.WriteMapNullValue)
指定序列化方式就打印出来了。
2.将对象转换成 JsonString 在fastJson 中有两种方式
- 通过 JSON.toJSONString
- 通过 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}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。