【Q&A】Gson解析json數據時如果屬性值爲null則會報空指針異常

gson解析數據時報空指針異常

問題描述

使用gson解析自定義類對象實例的時候,如果對象的某一個屬性值爲空,即爲null,則在使用gson.toJson解析的時候會提示空指針異常。
即:
示例對象爲

{"careingpeople_id":"33","lovecode":null,"appellation":"父親","name":"王健林","birthday":"2015-04-08","mobile":"15689653698","areano":"320583","communityno":"1","communityname":"測試小區","agency_id":"1","street":"","canselfcare":"0","language":"本地話","disease":"糖尿病","memo":"哈哈","ctime":"2015-04-08 10:22:33"}

Java代碼爲

Gson gson = new Gson();
Map<String, String> map = LibString.convertjsonToMapCaseInsensitive(str);
System.out.println(gson.toJson(map));

異常詳情爲

java.lang.NullPointerException
	at java.base/java.util.Objects.requireNonNull(Objects.java:221)
	at java.base/java.util.stream.Collectors.lambda$uniqKeysMapAccumulator$1(Collectors.java:178)
	at java.base/java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169)
	at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
	at java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)

解決方案

將對象中的null替換爲“”,即空字符串。

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