一、問題
- 當JavaBean中某個屬性爲null時,轉爲FastJson後,該屬性缺失。
- 這種情況下如果以FastJson爲返回值給被人提供接口,那麼返回的參數數量不固定。
- 因此,現在需要解決的是:無論某參數是否爲null,轉化爲FastJson後都不讓其“消失”。
二、解決
1、null屬性缺失情況演示
- 使用如下代碼測試:
class St {
private String sid;
private String sname;
private String ssex;
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSsex() {
return ssex;
}
public void setSsex(String ssex) {
this.ssex = ssex;
}
public static void main(String[] args) {
St st = new St();
st.setSid("111");
st.setSname("aaa");
JSONObject jsonSt = JSONObject.parseObject(JSON.toJSONString(st));
System.out.println(jsonSt);
}
}
輸出結果:
發現ssex這個屬性缺失。
2、解決後演示
在轉化爲JSONString方法中添加這個屬性:SerializerFeature.WriteMapNullValue
public static void main(String[] args) {
St st = new St();
st.setSid("111");
st.setSname("aaa");
JSONObject jsonSt = JSONObject.parseObject(JSON.toJSONString(st, SerializerFeature.WriteMapNullValue));
System.out.println(JSON.toJSONString(jsonSt, SerializerFeature.WriteMapNullValue));
}
輸出結果:
3、更多屬性
上文中用到的JSON.toJSONString(Object object, SerializerFeature… features)方法SerializerFeature的屬性值還有如下:
SerializerFeature屬性 | 含義 |
---|---|
UseSingleQuotes | 使用單引號而不是雙引號,默認爲false |
WriteMapNullValue | 使用輸出爲null的參數,默認爲false |
WriteNullStringAsEmpty | 字符串爲null時輸出“” |
SortField | 按字段名稱排序後輸出 |
WriteNullNumberAsZero | 數值字段如果爲null,輸出0 |
參考:https://blog.csdn.net/jialanshun/article/details/79078750