FastJson轉換javaBean時null值被忽略都問題-創(chuàng)新互聯

@[toc]

成都創(chuàng)新互聯公司堅持“要么做到,要么別承諾”的工作理念,服務領域包括:網站建設、成都網站制作、企業(yè)官網、英文網站、手機端網站、網站推廣等服務,滿足客戶于互聯網時代的賓縣網站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯網解決方案。努力成為您成熟可靠的網絡建設合作伙伴!

問題

當 JavaeBean 中某個屬性值為 null 時,轉換為 JSONObject 對象或者 json 字符串時,該屬性值被忽略。
如何讓不管值是否為 null,轉化后該屬性還存在,只是值為 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);
    }
}

輸出結果:{“sname”:"aaa","sid":111}ssex屬性沒了!

解決辦法

在轉化的方法中添加這個屬性: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));
    }

輸出結果:{"sname":"aaa","sid":111,"ssex":null}

更多屬性

上文中用到的 JSON.toJSONString(Object object, SerializerFeature… features) 方法 SerializerFeature 的屬性值還有如下
SerializerFeature屬性
含義
UseSingleQuotes使用單引號而不是雙引號,默認為false
WriteMapNullValue使用輸出為null的參數,默認為false

當value為null時,JSONObject.toJSONString()返回的json字符串將不展示對應的key,這明顯不是我們想要的,所以可以使用

SONObject.toJSONString(Object object, SerializerFeature... features) 來獲取我們想要的值,SerializerFeature屬性對應的值和含義如下:

名稱含義
QuoteFieldNames輸出key時是否使用雙引號,默認為true
UseSingleQuotes使用單引號而不是雙引號,默認為false
WriteMapNullValue是否輸出值為null的字段,默認為false
WriteEnumUsingToStringEnum輸出name()或者original,默認為false
UseISO8601DateFormatDate使用ISO8601格式輸出,默認為false
WriteNullListAsEmptyList字段如果為null,輸出為[],而非null
WriteNullStringAsEmpty字符類型字段如果為null,輸出為”“,而非null
WriteNullNumberAsZero數值字段如果為null,輸出為0,而非null
WriteNullBooleanAsFalseBoolean字段如果為null,輸出為false,而非null
SkipTransientField如果是true,類中的Get方法對應的Field是transient,序列化時將會被忽略。默認為true
SortField按字段名稱排序后輸出。默認為false
WriteTabAsSpecial把\t做轉義輸出,默認為false 不推薦
PrettyFormat結果是否格式化,默認為false
WriteClassName序列化時寫入類型信息,默認為false。反序列化是需用到
DisableCircularReferenceDetect消除對同一對象循環(huán)引用的問題,默認為false
WriteSlashAsSpecial對斜杠’/’進行轉義
BrowserCompatible將中文都會序列化為\uXXXX格式,字節(jié)數會多一些,但是能兼容IE6,默認為false
WriteDateUseDateFormat全局修改日期格式,默認為false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj,SerializerFeature.WriteDateUseDateFormat);
DisableCheckSpecialChar一個對象的字符串屬性中如果有特殊字符如雙引號,將會在轉成json時帶有反斜杠轉移符。如果不需要轉義,可以使用這個屬性。默認為false
NotWriteRootClassName含義
BeanToArray將對象轉為array輸出
WriteNonStringKeyAsString含義
NotWriteDefaultValue含義
BrowserSecure含義
IgnoreNonFieldGetter含義
WriteEnumUsingName含義

創(chuàng)新互聯www.cdcxhl.cn,專業(yè)提供香港、美國云服務器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網絡助力業(yè)務部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調度,確保服務器高可用性。佳節(jié)活動現已開啟,新人活動云服務器買多久送多久。

網頁題目:FastJson轉換javaBean時null值被忽略都問題-創(chuàng)新互聯
當前網址:http://bm7419.com/article32/ddpppc.html

成都網站建設公司_創(chuàng)新互聯,為您提供移動網站建設品牌網站建設、建站公司外貿建站、網站改版、云服務器

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

綿陽服務器托管