无法将JsonNull转换为JsonObject

我想将一个primitve属性从一个JsonObject复制到另一个

JsonObject propertyToBeCopied = source.getAsJsonObject(propertyName);

但我总是遇到这个例外:

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

根据文档,应该可以进行演员表,或者我错了吗?

根据文档, JsonNull是一个JsonElement但不是JsonObject (它本身就是一个JsonElement )。 运用

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

如果它不是JsonNull类型,它将返回一个JsonElementJsonObjectJsonNull

根据API参考 , JsonNull派生自JsonElement不是 JsonObject ,所以我不知道该演员如何有效。

你有没有考虑过使用json-simple而不是gson? 作为一般规则,我发现使用它比其他json框架更方便,虽然它当然没有gson提供的许多额外function。 但是,如果您正在使用gson解析json,那么可能需要切换到更简单的库。

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

哪一个会有更好的性能是jsonNull还是使用instanceOf运算符?