Как анализировать значения JSONArray в Android

#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   "");
}