【问题标题】:com.google.gson.JsonPrimitive cannot be cast to com.google.gson.JsonObject ERRORcom.google.gson.JsonPrimitive 无法转换为 com.google.gson.JsonObject 错误
【发布时间】:2013-12-26 00:24:45
【问题描述】:

当我尝试解析列表中的 json 对象时,出现错误 com.google.gson.JsonPrimitive cannot be cast to com.google.gson.JsonObject

输入:

{
    "r$contentRatings": [
        {
            "r$scheme": "urn:rt",
            "r$rating": "criticSummaryScore=-1,criticSummaryCount=0,criticSummaryCertified=false,criticSummaryRotten=false,fanSummaryScore=75,fanSummaryCount=4"
        }
    ]
}

代码:

JsonElement elem = null;
elem = jsonObject.get("r$contentRatings");

if(elem != null) {
    JsonArray contentRatingsList = elem.getAsJsonArray();
    if(contentRatingsList != null) {                                                                                                    
        for(int i=0; i< contentRatingsList.size(); i++) {
            JsonObject scheme =contentRatingsList.get(i).getAsJsonObject().getAsJsonObject("r$scheme");
            JsonObject rating =contentRatingsList.get(i).getAsJsonObject().getAsJsonObject("r$rating");
            JsonArray subRatings = contentRatingsList.get(i).getAsJsonObject().getAsJsonObject("r$subRatings").getAsJsonArray();

错误:

在 for 循环中,当我尝试从 r$scheme 列表中访问 jsonobject 时出现错误

com.google.gson.JsonPrimitive 无法转换为 com.google.gson.JsonObject

你能告诉我如何摆脱这个错误..

【问题讨论】:

    标签: exception gson classcastexception


    【解决方案1】:

    简单地说,在你的 json 中

    {
        "r$contentRatings": [
            {
                "r$scheme": "urn:rt",
                "r$rating": "criticSummaryScore=-1,criticSummaryCount=0,criticSummaryCertified=false,criticSummaryRotten=false,fanSummaryScore=75,fanSummaryCount=4"
            }
        ]
    }
    

    元素r$schemer$rating不是json对象,而是json原语。

    使用

    JsonPrimitive scheme = contentRatingsList.get(i).getAsJsonObject().getAsJsonPrimitive("r$scheme");
    JsonPrimitive rating = contentRatingsList.get(i).getAsJsonObject().getAsJsonPrimitive("r$rating");
    

    另外,请注意,您的 json 中没有名为 r$subRatings 的元素,因此您正在为下一行中的 NullPointerException 设置自己。

    【讨论】:

    • 非常感谢您的帮助。我将通过 .has(element) 处理空指针异常。
    猜你喜欢
    • 2017-09-24
    • 2020-12-13
    • 2019-06-17
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2022-01-20
    • 2014-02-03
    相关资源
    最近更新 更多