我想将一个primitve属性从一个JsonObject复制到另一个JsonObjectcom.google.gson.JsonNull cannot be cast to com.google.gson.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
eit6fx6z1#
根据docs,JsonNull是JsonElement,但不是JsonObject(它本身是JsonElement)。使用
JsonNull
JsonElement
JsonObject
JsonElement element = source.get(propertyName); if (!(element instanceof JsonNull)) { JsonObject propertyToBeCopied = (JsonObject) element; }
如果JsonElement不是JsonNull类型,则会传回转换为JsonObject的JsonElement。
0kjbasz62#
JsonElement element = source.get(propertyName); if (!(element.isJsonNull())) { JsonObject propertyToBeCopied = (JsonObject) element; }
isJsonNull或使用instanceOf运算符,哪一种性能更好?
jfewjypa3#
根据API reference,JsonNull是从JsonElement派生的,而 * 不是 * JsonObject,所以我看不出该类型转换如何有效。您是否考虑过使用json-simple而不是gson?一般来说,我发现使用json-simple比使用其他json框架要方便得多,尽管它没有gson提供的很多额外特性。但是如果您使用gson所做的只是解析json,那么使用更简单的库可能是值得的。
wribegjk4#
如果输出没有响应数组,则可能会引发此错误。
JsonObject playListObject = (JsonObject) parser.parse(output); JsonArray playListInformationArray = playListObject.getAsJsonArray("Response");
4条答案
按热度按时间eit6fx6z1#
根据docs,
JsonNull
是JsonElement
,但不是JsonObject
(它本身是JsonElement
)。使用如果
JsonElement
不是JsonNull
类型,则会传回转换为JsonObject
的JsonElement
。0kjbasz62#
isJsonNull或使用instanceOf运算符,哪一种性能更好?
jfewjypa3#
根据API reference,
JsonNull
是从JsonElement
派生的,而 * 不是 *JsonObject
,所以我看不出该类型转换如何有效。您是否考虑过使用json-simple而不是gson?一般来说,我发现使用json-simple比使用其他json框架要方便得多,尽管它没有gson提供的很多额外特性。但是如果您使用gson所做的只是解析json,那么使用更简单的库可能是值得的。
wribegjk4#
如果输出没有响应数组,则可能会引发此错误。