Страницы

Поиск по вопросам

четверг, 12 декабря 2019 г.

Json как парсить на Java?

#java #json #синтаксический_анализ #json_encode


Здравствуйте!
Есть вот такой ответ от сервера: 

 {
    "p_result": "ok",
    "p_item": [
        {
            "p_id": 132,
            "p_name": "Николай"
        }, 
        {
            "p_id": 133,
            "p_name": "Светлана"
        }
    ]
 }


Если правильно понимаю, то это массив.
Нужно написать метод который будет по параметру находить нужный элемент
что то наподобие : 

_http.getArrayParamValue("p_name");


Никак не могу сообразить.

p.s. думаю для меня было бы полезнее некое указание, нежели ссылка на очерендую библиотеку.
Спасибо!

Решение. Ошибку тоже понял. @Josfey Спасибо огромное. Вы очень мне помогли! 

String str = null; 
String input = "данные полученные от сервера"; 

JsonParser parser = new JsonParser(); 
JsonObject mainObject = parser.parse(input).getAsJsonObject();
JsonArray pItem = mainObject.getAsJsonArray("p_item"); 

for (JsonElement user : pItem) {

    JsonObject userObject = user.getAsJsonObject(); 
    userObject.get("p_id"); 
    str = userObject.get("p_id").toString(); 
}

    


Ответы

Ответ 1



Не совсем понял, что именно вы хотите извлечь из приведённой json-структуры, но вот, например, как извлечь из неё имя пользователя c id = 132 с помощью GSON. String input = "тут ваша json-структура"; JsonParser parser = new JsonParser(); JsonObject mainObject = parser.parse().getAsJsonObject(); JsonArray pItem = mainObject.getAsJsonArray("p_item"); for (JsonElement user : pItem) { JsonObject userObject = user.getAsJsonObject(); if (userObject.get("p_id").getAsInt() == 132) { System.out.println(userObject.get("p_name")); return; } }

Ответ 2



На мой взгляд, самая лучшая на данный момент библиотека для работы с JSON - это Jackson от fasterxml. Измерял скорость сериализации/десериализации с помощью JMH, и эта библиотека показала наилучшие результаты на довольно сложной структуре данных. Кроме того, она имеет довольно богатый набор настроек: интернирование ключей, реакция на ошибки синтаксиса и т.п. Если вы хотите не просто сериализовывать/десериализовывать JSON-документы, а хотите менять структуру JSON-документа на лету, то рекомендую GSON.

Ответ 3



Рекомендую обратить внимание на json-simple Вот тут пример использования

Комментариев нет:

Отправить комментарий