@[toc]

當(dāng) JavaeBean 中某個(gè)屬性值為 null 時(shí),轉(zhuǎn)換為 JSONObject 對(duì)象或者 json 字符串時(shí),該屬性值被忽略。
如何讓不管值是否為 null,轉(zhuǎn)化后該屬性還存在,只是值為 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);
}
}輸出結(jié)果:{“sname”:"aaa","sid":111}ssex屬性沒了!
在轉(zhuǎn)化的方法中添加這個(gè)屬性: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));
}輸出結(jié)果:{"sname":"aaa","sid":111,"ssex":null}
| 上文中用到的 JSON.toJSONString(Object object, SerializerFeature… features) 方法 SerializerFeature 的屬性值還有如下 SerializerFeature屬性 | 含義 |
|---|---|
| UseSingleQuotes | 使用單引號(hào)而不是雙引號(hào),默認(rèn)為false |
| WriteMapNullValue | 使用輸出為null的參數(shù),默認(rèn)為false |
當(dāng)value為null時(shí),JSONObject.toJSONString()返回的json字符串將不展示對(duì)應(yīng)的key,這明顯不是我們想要的,所以可以使用
SONObject.toJSONString(Object object, SerializerFeature... features) 來獲取我們想要的值,SerializerFeature屬性對(duì)應(yīng)的值和含義如下:
| 名稱 | 含義 |
|---|---|
| QuoteFieldNames | 輸出key時(shí)是否使用雙引號(hào),默認(rèn)為true |
| UseSingleQuotes | 使用單引號(hào)而不是雙引號(hào),默認(rèn)為false |
| WriteMapNullValue | 是否輸出值為null的字段,默認(rèn)為false |
| WriteEnumUsingToString | Enum輸出name()或者original,默認(rèn)為false |
| UseISO8601DateFormat | Date使用ISO8601格式輸出,默認(rèn)為false |
| WriteNullListAsEmpty | List字段如果為null,輸出為[],而非null |
| WriteNullStringAsEmpty | 字符類型字段如果為null,輸出為”“,而非null |
| WriteNullNumberAsZero | 數(shù)值字段如果為null,輸出為0,而非null |
| WriteNullBooleanAsFalse | Boolean字段如果為null,輸出為false,而非null |
| SkipTransientField | 如果是true,類中的Get方法對(duì)應(yīng)的Field是transient,序列化時(shí)將會(huì)被忽略。默認(rèn)為true |
| SortField | 按字段名稱排序后輸出。默認(rèn)為false |
| WriteTabAsSpecial | 把\t做轉(zhuǎn)義輸出,默認(rèn)為false 不推薦 |
| PrettyFormat | 結(jié)果是否格式化,默認(rèn)為false |
| WriteClassName | 序列化時(shí)寫入類型信息,默認(rèn)為false。反序列化是需用到 |
| DisableCircularReferenceDetect | 消除對(duì)同一對(duì)象循環(huán)引用的問題,默認(rèn)為false |
| WriteSlashAsSpecial | 對(duì)斜杠’/’進(jìn)行轉(zhuǎn)義 |
| BrowserCompatible | 將中文都會(huì)序列化為\uXXXX格式,字節(jié)數(shù)會(huì)多一些,但是能兼容IE6,默認(rèn)為false |
| WriteDateUseDateFormat | 全局修改日期格式,默認(rèn)為false。JSON.DEFFAULT_DATE_FORMAT = “yyyy-MM-dd”;JSON.toJSONString(obj,SerializerFeature.WriteDateUseDateFormat); |
| DisableCheckSpecialChar | 一個(gè)對(duì)象的字符串屬性中如果有特殊字符如雙引號(hào),將會(huì)在轉(zhuǎn)成json時(shí)帶有反斜杠轉(zhuǎn)移符。如果不需要轉(zhuǎn)義,可以使用這個(gè)屬性。默認(rèn)為false |
| NotWriteRootClassName | 含義 |
| BeanToArray | 將對(duì)象轉(zhuǎn)為array輸出 |
| WriteNonStringKeyAsString | 含義 |
| NotWriteDefaultValue | 含義 |
| BrowserSecure | 含義 |
| IgnoreNonFieldGetter | 含義 |
| WriteEnumUsingName | 含義 |
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
網(wǎng)頁題目:FastJson轉(zhuǎn)換javaBean時(shí)null值被忽略都問題-創(chuàng)新互聯(lián)
當(dāng)前網(wǎng)址:http://chinadenli.net/article32/ddpppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、建站公司、外貿(mào)建站、網(wǎng)站改版、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容