2015-07-21 7 views
1

Привет, ребята, это мой JSON ответ:Android Jsonarray не может быть преобразован в объект JSON

[ 
    { 
    "Woa": [ 
    "Seo", 
    "Rikjeo", 
    "JDa" 
    ] 
    }, 
"Aha", 
"Aad", 
"Char" 
] 

Я хочу, чтобы добавить в список строк Woa:

{ 
    "Woa": [ 
    "Seo", 
    "Rikjeo", 
    "JDa" 
    ] 
    } 

Это то, что я сделал до сих пор:

JSONObject object = new JSONObject(result); 
      JSONArray a = object.getJSONArray("Woa"); 
      for (int i = 0; i < a.length(); ++i) { 
       listWoa.add(a.getString(i)); 
      } 

Но я получаю эту ошибку:

type org.json.JSONArray cannot be converted to JSONObject 

Любые идеи, почему я не получаю ни одной строки и не могу быть преобразован в JSONObject.

+0

Ваш ответ в JSONArray не в JSONObject – SANAT

+0

Так как я могу это решить? –

+0

объект - это массив. поэтому используйте объект [0] .getJSONArray («Woa»); – Raghavendra

ответ

3

Для разбора выше ответа JSON. Попробуйте ввести код:

 JSONArray jsonArray = new JSONArray(result); 
     JSONObject jsonObjWoa = jsonArray.getJSONObject(0); 
     JSONArray jsonArrayWoa = jsonObjWoa.getJSONArray("Woa"); 
     for (int i = 0; i < jsonArrayWoa.length(); ++i) { 
      listWoa.add(jsonArrayWoa.getString(i)); 
     } 
+0

спасибо, чувак! это работает. –

1

ли что-то вроде этого:

JSONArray jsonArray = new JSONArray(result); 
JSONObject object = new JSONObject(jsonArray.get(0).toString());// if you have only one element then get 0th index 
JSONArray a = object.getJSONArray("Woa"); 
for (int i = 0; i < a.length(); ++i) { 
     listWoa.add(a.getString(i)); 
    } 
+0

Я получаю не могу разрешить конструктор в новом JSONObject (jsonArray.get (0)); –

+0

append '.toString()' Я отредактировал свой ответ. – Pankaj

2

Ваш JSON массив (список "вещей"), где первый элемент является объектом

[        << This is an array (let's call it A) 
    {         << This is A[0] 
    "Woa": [ 
    "Seo", 
    "Rikjeo", 
    "JDa" 
    ] 
    }, 
"Aha",        << This is A[1] == "AhA" 
"Aad",        << This is A[2] == "aad" 
"Char"        << This is A[3] == "Char" 
] 

И, таким образом, A [0 ] является объектом:

{       << This is an object (A[0]) 
    "Woa": [      << This is A[0].Woa (it's an array) 
    "Seo",       << This is A[0].Woa[0] == "Seo" 
    "Rikjeo",      << This is A[0].Woa[1] == "Rikjeo" 
    "JDa"       << This is A[0].Woa[2] == "JDa" 
    ] 
    } 

Самый простой способ не смешивать массивы и OBJETS в JSON заключается в следующем:

[...] is an array 
{...} is an object 
0

С моей точки зрения: я бы использовал GSON для автоматического анализа JSON и этого сайта для создания POJO.

http://www.jsonschema2pojo.org/ забудьте нажать: GSON как стиль аннотаций, а также использовать JSON вместо JSON Схемы

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