問題描述
使用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替換爲“”,即空字符串。