我想将一个原始属性从一个 JsonObject 复制到另一个
JsonObject propertyToBeCopied = source.getAsJsonObject(propertyName);
但我总是遇到这个异常:
com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject
根据文档,应该可以进行演员表,还是我错了?
根据文档JsonNull
是 aJsonElement
但不是 a JsonObject
(它本身就是 a JsonElement
)。使用
JsonElement element = source.get(propertyName);
if (!(element instanceof JsonNull)) {
JsonObject propertyToBeCopied = (JsonObject) element;
}
如果它不是 type ,将返回一个JsonElement
被强制转换为的 a 。JsonObject
JsonNull
根据API 参考,JsonNull
派生自JsonElement
和非 JsonObject
,所以我看不出该转换如何有效。
您是否考虑过使用json-simple代替 gson?作为一般规则,我发现它比其他 json 框架更方便,尽管它当然没有 gson 提供的很多额外功能。但是,如果您使用 gson 所做的只是解析 json,则可能值得切换到更简单的库。
JsonElement element = source.get(propertyName);
if (!(element.isJsonNull())) {
JsonObject propertyToBeCopied = (JsonObject) element;
}
哪一个将具有更好的性能isJsonNull或使用instanceOf运算符?
如果输出没有响应数组,则有可能引发此错误。
JsonObject playListObject = (JsonObject) parser.parse(output);
JsonArray playListInformationArray = playListObject.getAsJsonArray("Response");