2015-04-06 6 views
0

Я делаю в проекте Android. Вот моя JSON строка выглядит,Получить данные из JSON Результат

{"objectA":{"objectB","objectC","objectD":[{"Element1":"value1","Element2":"value2"}]}} 

Я пытаюсь получить objectD JSONArray.

первый я получил JSON результат в jsonStr variable.

JSONObject jsonObj = new JSONObject(jsonStr); 

Тогда я добавлю, что objectD к JSONArray

JSONArray array1 = jsonObj.getJSONArray("objectD"); 

Тогда я пытаюсь получить значения из этого массива

for (int i = 0; i < array1.length(); i++) { 

JSONObject c = array1.getJSONObject(i); 

String myString1 = c.getString("Element1"); 

String myString2 = c.getString("Element2"); 

//Then I put those to HashMap 

HashMap<String, String> p = new HashMap<String, String>(); 

p.put(Element1, myString1); 
p.put(Element2, myString2); 

ArrayList<HashMap<String, String>> q = new ArrayList<HashMap<String, String>>(); 

q.add(p); 

} 

Когда я am debuging мой код Это показывает, что jsonStr имеет t он json string.

но p и q не имеют значений.

Как я получил эти значения?

+0

Переместить 'ArrayList > q = new new ArrayList >();' out for loop –

+0

Я сделал это. Но это не сработало - @ ρяσѕρєя K – NoughT

+0

При работе с json-данными я всегда создаю объекты POJO, а затем использую Jackson или Gson для преобразования данных в/из json-формата. Это делает его намного проще и менее подверженным ошибкам. Я нахожу Джексона более мощным, но Gson проще использовать для простых случаев. –

ответ

0

json, который вы предоставляете, недействителен json (jsonlint.com). У вас есть имена objectB, objectC, которые не имеют значений. Я точно не знаю, как это повлияет на последующие предложения.
Я очень удивлен, что json не разобрал и не сделал исключение. Возможно, это просто разрушило плохие элементы.

Из «корня» json вы пытаетесь получить objectD; который не существует в корне. Вы должны сначала получить objectA; затем получите objectD.

JSONObject objA = jsonObj.getJSONObject("objectA"); 
JSONArray arrD = objA.getJSONArray("objectD"); 

Рекомендация @GaryBak использовать Джексона или GSON прикомандирована. Это намного проще в обслуживании.

Что касается отладки; p и q Не имея значений, нам не очень много говорят. Что делает jsonObj hold; что делает array1 удержать? Чем больше частей информации вы можете обеспечить, упрощает процесс предоставления возможных решений.

+0

Спасибо. С вашей помощью я сделал это. – NoughT

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