對象轉爲fastJson屬性值爲null時該屬性不顯示的問題

一、問題

  • 當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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章