Android - разбор JSON / GSON - PullRequest
       10

Android - разбор JSON / GSON

1 голос
/ 17 января 2012

Мой сервер возвратил следующую строку, используя jsonencode () в коде php после отправки переменных запроса POST для запроса.

{"distance": "0.00194210443015968", "usrlat": "38.5817", "usrlong": "- 77.3245", "globalid": "245"} {"distance": "4.94445650874035", "usrlat ":" 38,6501" , "usrlong": "- 77.2975", "globalid": "233"} { "расстояние": "4.94445650874035", "usrlat": "38.6501", "usrlong": "- 77.2975","globalid": "242"}

Код:

        try 
        { etc.. connection details..

            request = new OutputStreamWriter(connection.getOutputStream()); 
            request.write(parameters); 
            request.flush(); 
            request.close();             
            String line = "";                
            //Convert response to a string
            InputStreamReader isr = new InputStreamReader(connection.getInputStream()); 
            BufferedReader reader = new BufferedReader(isr); 
            StringBuilder sb = new StringBuilder(); 
            while ((line = reader.readLine()) != null) 
            { 

                sb.append(line + "\n");

            } 
            // Response from server will be stored in response variable.                 
            response = sb.toString(); 

            //try parse the string to a JSON object
            try{

                jObject = new JSONObject(response);                 

            }catch(JSONException e){...

Фон - Этот простой фрагмент кода создал jObject, который содержит только первый элемент (объект) из ответа.Я попытался изменить ответ на jArray, вставив квадратные скобки до и после, однако элементы (объекты) из ответа не отделяются запятой.Считается, что при ответе на вставку запятых происходит интеграция, но существует та же самая коренная проблема ... синтаксический анализ и интеграция.Кроме того, я создал класс со свойствами в соответствии с ответом.Не повезло, потому что существует одна и та же корневая проблема ... Разбор и итерация.Я изучил сеть только для того, чтобы обнаружить, что JSON чрезвычайно прост и легок по сравнению с XML.Я посетил мой местный книжный магазин и обнаружил, что JSON не является темой, достойной книги ... пока.Наконец, я обратился к GSON для некоторой ясности.

Вопрос - Используя JSON или GSON, как мне десериализовать и выполнить итерацию по ответу, чтобы создать полезные объекты в моем приложении для Android?Я задаю правильный вопрос в моем поиске решения?

1 Ответ

1 голос
/ 17 января 2012

Вы в основном решили проблему - текст не является допустимым массивом JSON.Таким образом, у вас есть две опции:

  1. Предварительная обработка JSON, чтобы сделать его действительным массивом JSON
  2. Чтение каждой строки по одной и создание JSONObject для каждой строки, а затем добавление каждого объекта вручнуюв JSONSArray или простой старый массив или коллекцию java

FYI - это предполагает, что вы не имеете никакого контроля над серверной стороной.Если вы это сделаете, измените этот код, чтобы сделать его действительным массивом JSON

...