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

use*_*054 5 exception classcastexception gson

当我尝试从列表中对json对象进行parjse时,我收到错误com.google.gson.JsonPrimitive无法强制转换为com.google.gson.JsonObject

输入:

{
    "r$contentRatings": [
        {
            "r$scheme": "urn:rt",
            "r$rating": "criticSummaryScore=-1,criticSummaryCount=0,criticSummaryCertified=false,criticSummaryRotten=false,fanSummaryScore=75,fanSummaryCount=4"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

码:

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();
Run Code Online (Sandbox Code Playgroud)

错误:

在for循环中,当我尝试jsonobject从列表中访问时,r$scheme我收到一个错误

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

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

Sot*_*lis 8

简单地说,在你的json中

{
    "r$contentRatings": [
        {
            "r$scheme": "urn:rt",
            "r$rating": "criticSummaryScore=-1,criticSummaryCount=0,criticSummaryCertified=false,criticSummaryRotten=false,fanSummaryScore=75,fanSummaryCount=4"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

元素r$schemer$rating不JSON对象,但JSON元.

使用

JsonPrimitive scheme = contentRatingsList.get(i).getAsJsonObject().getAsJsonPrimitive("r$scheme");
JsonPrimitive rating = contentRatingsList.get(i).getAsJsonObject().getAsJsonPrimitive("r$rating");
Run Code Online (Sandbox Code Playgroud)

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