Простой анализ JSON в Android - PullRequest
       4

Простой анализ JSON в Android

1 голос
/ 21 февраля 2012

Я получил ответ от Json.Я не могу получить значения из строки string.my:

Json_response -

{"NameAllList":[{"Current":{"time":"2012-02-21T08:04:21","Name":"abcd"},
    "Next":{"Name":"data1","StartTime":"2012-02-21T08:06:21"}},{"Current":{"time":"2012-02-21T08:14:21","Name":"defg"},
    "Next":{"Name":"data2","StartTime":"2012-02-21T08:24:21"}},{"Current":{"time":"2012-02-21T08:28:21","Name":"ghij"},
    "Next":{"Name":"data3","StartTime":"2012-02-21T08:34:21"}},{"Current":{"time":"2012-02-21T08:40:21","Name":"knmo"},
    "Next":{"Name":"data4","StartTime":"2012-02-21T08:48:21"}}]}

, и я попробовал это.

JSONObject jsonObj = new JSONObject(json_response);
JSONObject subObj = jsonObj.getJSONObject("Current");
String name_current =subObj.getString("Name");

, но я невозможность получить значение «Имя».какую ошибку я совершилпредоставьте ссылку для выполнения вышеуказанного анализа.

Ответы [ 4 ]

3 голосов
/ 21 февраля 2012

Прежде всего, ваш ответ JSON имеет NameAllList в качестве массива объектов JSON.

Итак, сначала вам нужно получить массив JSON, а затем вы можете выбрать один за другим объект.

например:

JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");

for(int i=0; i<array.length(); i++)
{
   // Retrieve Current object as such
   JSONObject objCurrent = array.getJSONObject("Current");

   // Retrieve Next object as such
   JSONObject objNext = array.getJSONObject("Next");
}
1 голос
/ 21 февраля 2012

Вы неправильно анализируете json, поэтому вы не можете получить значение Name. Обратите внимание, что JSON Annotation [] представляет JSONArray и {} соответствующий JSONObject, поэтому метод для получения имени текущего элемента:

JSONObject jsonObj = new JSONObject(json_response_string);
JSONArray jsonArr=jsonObj.getJSONArray("NameAllList");
String Hora_name_current="";
for(int i=0;i<jsonArr.length();i++)
{
     JSONObject obj=jsonArr.get(i);
     try{
           JSONObject subObj = obj.getJSONObject("Current");
           Hora_name_current =subObj.getString("Name");
           break;
     }catch(JSONException ex)
     {

     }



}
1 голос
/ 21 февраля 2012

похоже, что вы пытаетесь использовать JSONObject, когда вы должны использовать JSONArray для второго запроса. Попробуйте это:

JSONObject jsonString = (new JSONObject(json_response_string));
JSONArray array = jsonString.getJSONArray("NameAllList");

В вашем возвращении JSON "NameAllList на самом деле является массивом и должен обрабатываться как таковой. Как только вы установите его в" массив ", вы можете запустить цикл for и обработать его как любой другой массив в Java.

Дайте мне знать, если это поможет.

David

0 голосов
/ 21 февраля 2012

JSONObject jsonObj = новый JSONObject (json_response_string);JSONArray jsonArray = jsonObj.getJSONArrays ("NameAllList");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...