解決JSONObject.toJSONString()輸出null的問(wèn)題
JSONObject.toJSONString()輸出null
問(wèn)題:fastjson的api種,jsonObject.toJsonString(),當(dāng)值為null時(shí),沒(méi)打印出來(lái)
代碼
JSONObject jsonObject = new JSONObject(); jsonObject.put("id",null); jsonObject.put("class","12"); jsonObject.put("name",""); // 使用默認(rèn)序列化方式打印 System.out.println(jsonObject.toJSONString()); // 使用指定序列化方式 System.out.println(jsonObject.toJSONString(jsonObject,SerializerFeature.WriteMapNullValue));
輸出
{"name":"","class":"12"}
{"id":null,"name":"","class":"12"}
可以發(fā)現(xiàn),使用默認(rèn)方式時(shí),id沒(méi)有打印null,指定序列化SerializerFeature.WriteMapNullValue,會(huì)打印null
可以看到
看下SerializerFeature屬性
名稱 | 含義 |
---|---|
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 |
SortField | 按字段名稱排序后輸出。默認(rèn)為false |
WriteTabAsSpecial | 把\t做轉(zhuǎn)義輸出,默認(rèn)為false |
PrettyForma | 結(jié)果是否格式化,默認(rèn)為false |
WriteClassName | 序列化時(shí)寫入類型信息,默認(rèn)為false。反序列化是需用到 |
不要盲目的使用JSONObject.toJSONString
JSONObject.toJSONString會(huì)默認(rèn)執(zhí)行你這個(gè)要解析的類中的所有g(shù)et方法,很容易出現(xiàn)空指針異常,而應(yīng)該換為gson.toJson()這個(gè)方法
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- String轉(zhuǎn)JSONObject的兩種方式
- Java中如何將String轉(zhuǎn)JSONObject
- 關(guān)于JSONObject.toJSONString出現(xiàn)地址引用問(wèn)題
- 利用JSONObject.toJSONString()包含或排除指定的屬性
- 使用JSONObject.toJSONString 過(guò)濾掉值為空的key
- JSONObject?toJSONString錯(cuò)誤的解決
- Java使用fastjson對(duì)String、JSONObject、JSONArray相互轉(zhuǎn)換
- 詳解Java中String JSONObject JSONArray List<實(shí)體類>轉(zhuǎn)換
- 解決String字符串轉(zhuǎn)JSONObject順序不對(duì)的問(wèn)題
相關(guān)文章
使用Maven搭建SpringMVC項(xiàng)目的步驟(圖文教程)
本篇文章主要介紹了使用Maven搭建SpringMVC項(xiàng)目的步驟(圖文教程),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例
這篇文章主要介紹了常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例,一般來(lái)說(shuō)DSA算法用于簽名的效率會(huì)比RSA要快,需要的朋友可以參考下2016-04-04Java 中執(zhí)行動(dòng)態(tài)表達(dá)式語(yǔ)句前中后綴Ognl、SpEL、Groovy、Jexl3
這篇文章主要介紹了Java 中執(zhí)行動(dòng)態(tài)表達(dá)式語(yǔ)時(shí)的句前中后綴Ognl、SpEL、Groovy、Jexl3的相關(guān)資料,需要的朋友可以參考下面文章的詳細(xì)介紹2021-09-09