JsonObject流处理空值

时间:2018-10-29 07:21:24

标签: java gson

我正在尝试使用流将JsonObject值放入自定义ArrayList

    List<MyClass> custom = new ArrayList<>();

我将流映射到JsonObject

.map(JsonElement::getAsJsonObject)
                .forEach(jsonObject -> custom.add(new MyClass(
                        jsonObject.get("stuff1").getAsString(),
                        jsonObject.get("stuff2").getAsString(),
                        jsonObject.get("stuff3").getAsLong(),
                        jsonObject.get("stuff4").getAsInt())));

并尝试添加它,一切正常。

,但是jsonObject中可能缺少值stuff4(服务器未发送stuff4 JsonObject属性),这就是我得到空指针异常的地方。有谁知道我如何使用gson lib处理这个问题?用stream#collect代替stream#forEach的答案也很好

2 个答案:

答案 0 :(得分:0)

__init__

.map(JsonElement::getAsJsonObject)
                .forEach(jsonObject -> custom.add(new MyClass(
                        jsonObject.get("stuff1").getAsString(),
                        jsonObject.get("stuff2").getAsString(),
                        jsonObject.get("stuff3").getAsLong(),
                        jsonObject.get("stuff4")==null? null:jsonObject.get("stuff4").getAsInt())));

答案 1 :(得分:0)

如果导入了Gson库,则可以执行以下操作:

Gson gson = new Gson();


.map(JsonElement::getAsJsonObject)
                .forEach(jsonObject -> custom.add(gson.fromJson(jsonObject.toString(),MyClass.class)))
);