2014-04-17 4 views
0

Я хочу, чтобы получить объект JSON из этой строки, вытекающей из этого JSON файла:JSONArray не может быть преобразован в JSONObject в Java

{ 
"categories": { 
    "category": [ 
     { 
      "label": "Collaboration", 
      "thumbnail": "http://mywebite.com/dfsv", 
      "description": "...", 
      "contents": { 
       "@attributes": { 
        "count": "79" 
       } 
      }, 
      "@attributes": { 
       "id": "ZSQYN2" 
      } 
     }, 
     { 
      "label": "Communication", 
      "thumbnail": "http://mywebite.com/dfsv", 
      "description": "...", 
      "contents": { 
       "@attributes": { 
        "count": "43" 
       } 
      }, 
      "@attributes": { 
       "id": "uGQ9MC" 
      } 
     } 
    ], 
    "@attributes": { 
     "page": "12", 
     "limit": "0", 
     "count": "111", 
     "lang": "en" 
    } 
} 

}

Я использую этот код:

JSONObject obj = new JSONObject(myString); 

И я получил сообщение об ошибке:

Значение ... типа org.json.JSONArray не могут быть преобразованы в JSONObject

И если я:

JSONArray obj = new JSONArray(myString); 

Я получил сообщение об ошибке:

значение .. . типа org.json.JSONObject не могут быть преобразованы в JSONArray

...

У вас есть идея?

+0

Вы уверены, что myString идентичен в обоих случаях? –

+0

Да, это одна и та же строка – cooow

ответ

1

Я наконец нашел решение!

я заменил

JSONObject obj = new JSONObject(myString); 

по:

JSONObject obj = new JSONObject(myString.substring(myString.indexOf("{"), myString.lastIndexOf("}") + 1)); 

Ответ нашел here

Надеются, что это поможет кому-то!

1

JSONArray и JSONObject - это две разные вещи и не должны быть совместимы друг с другом, поэтому эти ошибки имеют смысл. Это JSONArray:

["foo", "bar", "baz"]

Это JSONObject:

{ "foo" : "bar", "baz" : "quux" }

Вы можете искать JSONElement, что в API, как Google's GSON является общим суперкласс между двумя массивами и объектами.

Под Android JSON API они также не совместимы с типом.

Смежные вопросы