#android #arrays #json
#Android #массивы #json
Вопрос:
Я хотел бы проанализировать все атрибуты name и id из следующего массива JSon: JSon link
Я пробовал использовать следующий код, но не работает. Я получаю
org.json.JSONException: Value [{"id":0,"name":"Alsópetény"}] at 0 of type org.json.JSONArray cannot be converted to JSONObject
Исключение
Мой код :
JSONArray jsonarray = new JSONArray(jsonList);
for (int i = 0; i < jsonarray.length(); i ) {
JSONObject jsonobject = jsonarray.getJSONObject(i);
String id= jsonobject.getString("id");
String name= jsonobject.getString("name");
System.out.print("ID:n" id "");
System.out.print("NAME:n" name "");
}
Комментарии:
1. Я запустил ваш код с
jsonList = "[{"id":0,"name":"Alsópetény"}]"
, и никакой ошибки не было выдано…
Ответ №1:
Ваше (как я вижу по ссылке, которую вы опубликовали) — это единственное сообщение JSON {…}, которое содержит много узлов («A», «B», «E», «F» … и так далее). Каждый узел представляет собой массив JSON, который содержит некоторые объекты JSON.
Сначала вы должны получить объекты JSON: «A», «B», … таким образом:
String result = EntityUtils.toString(response.getEntity()); //the result of HTTP call
JSONObject JO = new JSONObject(result);
JSONArray ja = JO.getJSONArray("A");
JSONArray jb = JO.getJSONArray("B");
...
Затем вы должны получить доступ к элементам JSONArray:
for(int i=0; i< ja.length(); i ){
JSONObject jo = ja.getJSONObject(i);
String id = jo.getString("id");
String name = jo.getString("name");
System.out.println("id: " id "");
System.out.println("name: " name "");
}