FastJson簡介fastjson是由alibaba開源的一套json處理器。與其他json處理器(如Gson,Jackson等)和其他的Java對象序列化反序列化方式相比,有比較明顯的性能優(yōu)勢
JSON.toJSONString
竟然也有坑今天,在對對象轉(zhuǎn)成JsonString的時候,對象有三個屬性,其中兩個有內(nèi)容,一個為 null
踩坑實例
這里箭頭指向的位置,因為 sent-1
中的 value為空
,所以并未打印出來。
第二個使用:
JSON.toJSONString(map, SerializerFeature.WriteMapNullValue)
指定序列化方式就打印出來了。
而不是默認被忽略掉
? 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"}
SerializerFeature.WriteMapNullValue
是否輸出值為 null 的字段, 默認為false
也就是說有null時會輸出而不是忽略(默認策略是忽略,所以看不到為null的字段)
SerializerFeature.WriteNullStringAsEmpty
字符類型字段如果為null,輸出為 ”“ , 而非null
注意是字段是字段是字段
(即 屬性 ),而不是 json.put("key",null),所以用它時,字段為null的可以轉(zhuǎn)換為空字符串。
如果讓輸出的json中所有為null的字符串都變成空字符串,最簡單的做法就是加一個值過濾器,這樣就避免了有的字段為null,有的字段為空字符的現(xiàn)象。
例
String a = null; System.out.println(JSON.toJSONString(a, SerializerFeature.WriteNullStringAsEmpty)); {"a":""} / 而不是 {"a":null}