gson 无法将JsonNull强制转换为JsonObject

zvms9eto  于 2022-11-06  发布在  其他
关注(0)|答案(4)|浏览(210)

我想将一个primitve属性从一个JsonObject复制到另一个JsonObject
com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject
但我总是遇到这样的例外:
com.google.gson.JsonNull cannot be cast to com.google.gson.JsonObject
根据文件,应该可以做演员,还是我错了?

eit6fx6z

eit6fx6z1#

根据docsJsonNullJsonElement,但不是JsonObject(它本身是JsonElement)。使用

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

如果JsonElement不是JsonNull类型,则会传回转换为JsonObjectJsonElement

0kjbasz6

0kjbasz62#

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

isJsonNull或使用instanceOf运算符,哪一种性能更好?

jfewjypa

jfewjypa3#

根据API referenceJsonNull是从JsonElement派生的,而 * 不是 * JsonObject,所以我看不出该类型转换如何有效。
您是否考虑过使用json-simple而不是gson?一般来说,我发现使用json-simple比使用其他json框架要方便得多,尽管它没有gson提供的很多额外特性。但是如果您使用gson所做的只是解析json,那么使用更简单的库可能是值得的。

wribegjk

wribegjk4#

如果输出没有响应数组,则可能会引发此错误。

JsonObject playListObject = (JsonObject) parser.parse(output);

JsonArray playListInformationArray = playListObject.getAsJsonArray("Response");

相关问题