无法将JsonNull转换为JsonObject

时间:2012-09-11 23:42:58

标签: java json gson

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

JsonObject propertyToBeCopied = source.getAsJsonObject(propertyName);

但我总是遇到这个例外:

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

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

4 个答案:

答案 0 :(得分:13)

根据docs JsonNullJsonElementJsonObject,而不是JsonElement(本身就是JsonElement element = source.get(propertyName); if (!(element instanceof JsonNull)) { JsonObject propertyToBeCopied = (JsonObject) element; } )。使用

JsonElement
如果<{1}}不属于JsonObject,则

会返回JsonNull {{1}}。

答案 1 :(得分:2)

根据API referenceJsonNull来自JsonElement JsonObject,所以我看不出那个演员怎么会有效。

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

答案 2 :(得分:1)

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

哪一个具有更好的性能 isJsonNull 或使用 instanceOf 运算符?

答案 3 :(得分:0)

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

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

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