无法将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
类型,它将返回一个JsonElement
为JsonObject
的JsonNull
。
根据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运算符?