json转对象的时候字段为空值的时候会被过滤
今天突然想起來一個json字符串轉json對象的時候容易忽略的一個小細節。只為自己記錄
問題:json字符串里面有值為null的轉json對象的時候字段消失
假設:調接口的時候,返回的json字符串里面有兩條記錄,每條記錄里面有三個字段,
a,b,c
接口返回的json字符串樣例:
{
“msg”:“請求成功!”,
“code”:“200”,
“data”:[
{
“a”:null,
“b”:“20210322”,
“c”:null
},
{
“a”:null,
“b”:“20210323”,
“c”:null
}
]
}
但是c字段的值是null
這時候一般都會把json字符串先轉成JSONObject對象,然后從對象里面取值,
直接轉的時候是可以轉的,但是轉完之后你會發現你要取a和c字段的時候會報錯,找不到字段,是因為a和c值為空自動屏蔽掉了,
解決辦法一:
String ssssss=JSONObject.toJSONString(jsonString, SerializerFeature.WriteMapNullValue);
JSONObject jsonobject = JSONObject.parseObject(ssssss);
1,從json對象里面取code
String code = jsonobject.getString(“code”)
2,data里面是多條記錄的時候,要轉json數組
JSONArray jsonArray = JSONArray.fromObject(jsonobject.get(“data”));
然后遍歷json數組,從數組里面取對應記錄的值就可以了
附:
QuoteFieldNames———-輸出key時是否使用雙引號,默認為true
WriteMapNullValue——–是否輸出值為null的字段,默認為false
WriteNullNumberAsZero—-數值字段如果為null,輸出為0,而非null
WriteNullListAsEmpty—–List字段如果為null,輸出為[],而非null
WriteNullStringAsEmpty—字符類型字段如果為null,輸出為”“,而非null
WriteNullBooleanAsFalse–Boolean字段如果為null,輸出為false,而非null
解決辦法二:
如果接口返回的數據在你項目里面有對應的實體類,這就簡單了,
jsonString:是接收到接口返回的結果
List Danganlist = JSONObject.parseArray(jsonString, Dangan.class);
對Danganlist 判空,
遍歷Danganlist
再取值就和實體類取值一樣了
String aaa = Dangan.getAaa();
總結
以上是生活随笔為你收集整理的json转对象的时候字段为空值的时候会被过滤的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 生成 ssh-key gi
- 下一篇: 跳出内层循环 使用 for of 代替