2013-12-26 1 views
5

Когда я пытаюсь parjse json-объект из списка, я получаю сообщение об ошибке com.google.gson.JsonPrimitive не может быть передан com.google .gson.JsonObjectcom.google.gson.JsonPrimitive нельзя отнести к com.google.gson.JsonObject ERROR

Вход:

{ 
    "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(); 

Ошибка:

I Nside для цикла, когда я пытаюсь получить доступ к jsonobject из списка r$scheme я получаю ошибку

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

Можете ли вы пожалуйста, дайте мне знать, как избавиться от этой ошибки ..

ответ

8

Просто в вашем JSON

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

r$scheme элементы и r$rating не являются объектами JSON, но JSON примитивы.

Использование

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

Кроме того, обратите внимание, что у вас нет ни одного элемента с именем r$subRatings в вашем JSON, так что вы настраиваете себя на NullPointerException в следующей строке.

+0

Большое вам спасибо за вашу помощь. Я обработаю исключение nullpointer через .has (element). – user3072054