不能施放JsonNull到的JSONObject(Can't cast JsonNull t

2019-09-22 08:08发布

我想一个primitve属性复制从一个JSONObject的另一

JsonObject propertyToBeCopied = source.getAsJsonObject(propertyName);

但我总是遇到这样的例外:

com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject

根据该文件,应该可以做演员,还是我错了?

Answer 1:

根据该文档 JsonNullJsonElement但不是JsonObject (这本身就是一个JsonElement )。 运用

JsonElement element = source.get(propertyName);
if (!(element instanceof JsonNull)) {
    JsonObject propertyToBeCopied = (JsonObject) element;
}

将返回JsonElement被强制转换为JsonObject ,如果它的类型是不JsonNull



Answer 2:

按照API参考 , JsonNull派生自JsonElement不是 JsonObject ,所以我没有看到如何剧组可以永远有效。

而你考虑使用JSON的简单 ,而不是GSON? 作为一般规则,我觉得它更方便,比其他JSON框架工作,尽管当然它没有很多的GSON提供了额外的功能。 但是,如果你正在使用GSON做的是解析JSON,它可能是值得切换到简单的库。



Answer 3:

JsonElement element = source.get(propertyName);
if (!(element.isJsonNull())) {
    JsonObject propertyToBeCopied = (JsonObject) element;
}

哪一个会有更好的表现isJsonNull或使用instanceof运算符?



文章来源: Can't cast JsonNull to JsonObject
标签: java json gson