幾年前博主在GitHub提的一個問題,記錄下!
打印JSON對象時,如果內部鍵值爲null,則該鍵不會打印出來
JSONObject{“a”:1,“b”:"",“c”:null,“d”:“loongshawn”}
打印出來JSONObject{“a”:1,“b”:"",“d”:“loongshawn”},作如何解釋…
問題來源:https://github.com/alibaba/fastjson/issues/988
問題解答:https://github.com/alibaba/fastjson/wiki/WriteNull_cn
輸入輸出空值
在fastjson中,缺省是不輸出空值的。無論Map中的null和對象屬性中的null,序列化的時候都會被忽略不輸出,這樣會減少產生文本的大小。但如果需要輸出空值怎麼做呢?
使用SerializerFeature.WriteMapNullValue
Model obj = ...;
JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue);
空值特別處理
SerializerFeature | 描述 |
---|---|
WriteNullListAsEmpty | 將Collection類型字段的字段空值輸出爲[] |
WriteNullStringAsEmpty | 將字符串類型字段的空值輸出爲空字符串 “” |
WriteNullNumberAsZero | 將數值類型字段的空值輸出爲0 |
WriteNullBooleanAsFalse | 將Boolean類型字段的空值輸出爲false |
class Model {
public List<Objec> items;
}
Model obj = ....;
String text = JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue, SerializerFeature.WriteNullListAsEmpty);