LINUX.ORG.RU

Распарсить строку на json'e

 , ,


0

1
{"response":[2,{"one":182732333,"two":96395825},{"one":182488050,"two":96395825}]}

Я очень плаваю в синтаксисе json'а, поэтому прошу помощи у вас, как gson'ом распарсить это? Когда мне требовалось распарсить такую строчку:

{"response":[{"one":182732333,"two":96395825},{"one":182488050,"two":96395825}]}
Я писал класс:
public class ClassName {
   private ArrayList<Item> response;
   /*Геттер к response*/
}
public class Item {
   private String one;
   private String two;
   /*Геттереры*/
}
А парсил так:
/*response — строка, в которой записан json*/
Gson gson = new Gson();
ClassName cName = gson.fromJson(response, ClassName.class);
Объясните пожалуйста, как распарсить самый верхний json? Буду премного благодарен. По сути, нужна только структура ClassName. И еще меня интересует, какому типу данных соответствует response в json?



Последнее исправление: jdev (всего исправлений: 1)

public class ClassName {
   private Integer count;
   private ArrayList<String> response;
   /*Геттер к response*/
}

не? ;)

aol ★★★★★
()

плаваю в синтаксисе json

object
    {}
    { members } 
members
    pair
    pair , members
pair
    string : value
array
    []
    [ elements ]
elements
    value
    value , elements
value
    string
    number
    object
    array
    true
    false
    null

string
    ""
    " chars "
chars
    char
    char chars
char
    any-Unicode-character-
        except-"-or-\-or-
        control-character
    \"
    \\
    \/
    \b
    \f
    \n
    \r
    \t
    \u four-hex-digits 
number
    int
    int frac
    int exp
    int frac exp 
int
    digit
    digit1-9 digits
    - digit
    - digit1-9 digits 
frac
    . digits
exp
    e digits
digits
    digit
    digit digits
e
    e
    e+
    e-
    E
    E+
    E-

Можешь не благодарить.

anonymous
()
Ответ на: комментарий от aol

Нет, там же числовая константа в response находится. Это какой-то массив из разных элементов, или Map, как мне кажется.

jdev
() автор топика
Ответ на: комментарий от anonymous

Таки поблагодарю и даже распечатаю, пусть под носом будет. Конечно, я мог бы и сам нагуглить. В общем-то и гуглил, но твоя подборка полнее, чем на w3shcools. Спасибо. :-)

jdev
() автор топика
Ответ на: комментарий от zhuravlik

А я перед выбором парсера обратился к гуглу и вышел на интересующий меня вопрос на so, где gson описали как самый простой и удобный. Сейчас посмотрю на дефолтный, спасибо. :-)

jdev
() автор топика
Ответ на: комментарий от jdev

Насколько я понимаю, основной смак gson'а в том, что он из json'а заполняет java-бины, и наоборот - сериализует бины в json. Т.е. этот процесс не надо описывать в коде самому до деталей.

Более простые парсеры дают возможность получать поля json-объектов или элементы json-массивов. Они куда понятнее, но все надо делать руками.

zhuravlik ★★★★
()
Ответ на: Анон, помоги от jdev

Как я понял из doc'a, ты получишь JsonArray из JsonElement ([2,{«one»:182732333,«two»:96395825},{«one»:182488050,«two»:96395825}]). А он может содержать в себе любую json сущность, что бы достать её предоставляются методы типа

int getAsInt() - convenience method to get this element as a primitive integer value.
JsonArray getAsJsonArray() - convenience method to get this element as a JsonArray.

и так далее.

anonymous
()
Ответ на: комментарий от jdev

Да, но как это отразить в ClassName, Item, которые я привел для примера в ОП?

Если этого не достаточно, можешь не продолжать.

anonymous
()
Ответ на: комментарий от jdev

чем на w3shcools

Забань этот сайт в результатах гугла. Там просто неверная информация много где идёт.

tensai_cirno ★★★★★
()
1 февраля 2013 г.
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.