Как парсить и распарсить JSON на Java: способы и методы с примерами
Java — это многофункциональный язык программирования, на котором можно разрабатывать приложения, выдерживающие высокие нагрузки , п оэтому такая операция , как парсинг JSON, для Java не является проблемой. Сегодня в статье мы покажем , как выглядит простой Java-парсер для JSON. Парсер — это программный скрипт, выполняющий парсинг данных.
JSON — это довольно распространенная структура, которая часто используется и в java-приложениях.
Создадим небольшую структуру JSON и проведем над ней парсинг, используя возможности Java. Наш JSON-документ:
<
«myPageInfo»: <
«myPageName»: «Homepage-Codernet»,
«siteLogo»: «https://www.codernet.ru/logo.jpg»
>,
«myPosts»: [
<
«mypost_id»: «999999999»,
«actor_id»: «2222»,
«author_name»: «Дормидонт Платонович»,
«mypost_title»: «Как парсить JSON на Java»,
«comments»: [],
«time_of_mypost»: «88888888»
>
]
>
Есть несколько способов, чтобы наладить парсинг JSON на Java. Для примера, мы будем парсить из нашего « джсон » значения «myPageName» и «mypost_id».
Парсинг JSON с использованием Java при помощи инструмента «org.json»
Чтобы воспользоваться «org.json» в Джава-парсинге, в первую очередь внедряем в программный скрипт соответствующий одноименный инструмент.
Джава-парсер « джсон » в подобной интерпретации будет выглядеть вот так:
import org.json.JSONArray;
import org.json.JSONObject;
public class MyParseJSON <
static myString myjson = «. «;
public static void main(myString[] args) <
JSONObject obj = new JSONObject(myjson);
myString myPageName = obj.getJSONObject(«myPageInfo»).getmyString(«myPageName»);
System.out.printf(myPageName);
JSONArray arr = obj.getJSONArray(«myPosts»);
for (int i = 0; i< arr.length(); i++) <
myString mypost_id = arr.getJSONObject(i).getmyString(«mypost_id»);
System.out.printf(mypost_id);
>
>
>
Парсинг JSON с использованием Джава и «Gson»
Чтобы спарсить « джсон » , воспользовавшись Джава и «Gson», необходимо подключить одноименный инструмент в программный скрипт.
Джава-парсер « джсон » в подобной интерпретации будет выглядеть вот так:
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class MyParseJSON <
static myString myjson = «. «;
public static void main(myString[] args) <
JsonObject jsonObject = new myJsonParser().parse(myjson).getAsJsonObject();
myString myPageName = jsonObject.getAsJsonObject(«myPageInfo»).get(«myPageName»).getAsMyString();
System.out.println(myPageName);
JsonArray arr = jsonObject.getAsJsonArray(«myPosts»);
for (int i = 0; i< arr.size(); i++) <
myString mypost_id = arr.get(i).getAsJsonObject().get(«mypost_id»).getAsMyString();
System.out.println(mypost_id);
>
>
>
Парсинг « джсон » с использованием Джава и «JsonPATH»
Чтобы спарсить « джсон », воспользовавшись Джава и «JsonPATH», необходимо подключить одноименный инструмент в программный скрипт.
Java-парсер JSON в подобной интерпретации будет выглядеть вот так:
import com.jayway.jsonpath.JsonPath;
public class MyParseJSON <
static myString myjson = «. «;
public static void main(myString[] args) <
myString myPageName = JsonPath.read(myjson, «$.myPageInfo.myPageName»);
System.out.printf(myPageName);
Integer myPosts = JsonPath.read(myjson, «$.myPosts.length()»);
for(int i=0; i< myPosts; i++) <
myString mypost_id = JsonPath.read(json, «$.myPosts[» + i + «].mypost_id»);
System.out.println(mypost_id);
>
>
>
Заключение
Сегодня мы разобрали три способа того , ка к происходит парсинг JSON при помощи Java. Парсинг — это довольно распространенный процесс, который применяется повсеместно и никак не зависит от используемого языка. Java не является самы м популярны м язык ом для парсинга, однако и на нем предусмотрены инструменты для данного действия. Парсинг часто связан с веб-разработкой, когда пользователи парсят определенную информацию с разных веб-сайтов на свой сайт. Для такого парсинга в основно м используется язык программирования Python.
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Как парсить json на java
JSON (JavaScript Object Notation) is a lightweight, text-based, language-independent data exchange format that is easy for humans and machines to read and write. JSON can represent two structured types: objects and arrays. An object is an unordered collection of zero or more name/value pairs. An array is an ordered sequence of zero or more values. The values can be strings, numbers, booleans, null, and these two structured types.
Below is a simple example from Wikipedia that shows JSON representation of an object that describes a person. The object has string values for first name and last name, a number value for age, an object value representing the person’s address, and an array value of phone number objects.
JSON Processing in Java : The Java API for JSON Processing JSON.simple is a simple Java library that allow parse, generate, transform, and query JSON.
Getting Started : You need to download the json-simple-1.1 jar and put it in your CLASSPATH before compiling and running the below example codes.
- For importing jar in IDE like eclipse, refer here.
- If you are using maven you may use the following maven link https://mvnrepository.com/artifact/com.googlecode.json-simple/json-simple/1.1.1
Json-Simple API : It provides object models for JSON object and array structures. These JSON structures are represented as object models using types JSONObject and JSONArray. JSONObject provides a Map view to access the unordered collection of zero or more name/value pairs from the model. Similarly, JSONArray provides a List view to access the ordered sequence of zero or more values from the model.
Java json parser – пример работы парсера
В этом посте мы разберем подробный пример парсера Java JSON. JSON(JavaScript Object Notation) – это простой текстовый формат, который облегчает чтение и запись. Это широко используемый формат обмена данными, поскольку его анализ и генерация просты в использовании.
В языке Java есть несколько способов обработки JSON. В этом примере мы собираемся использовать общий набор инструментов – JSON.simple – и узнаем, как анализировать каждый тип файла.

Установка среды
Перед началом написания кода программы, мы должны установить подходящую среду для компилятора, чтобы распознавать классы JSON. Если необходимо построить проект с помощью Maven, нужно добавить следующую запись в pom.xml:
Иначе необходимо добавить версию json-simple-1.1.1.jar в CLASSPATH.
Пример парсинга JSON
Разберем, как мы можем проанализировать и произвести чтение файла json, для этого нужно создать наш собственный файл, он будет называться jsonTestFile.json. Он имеет следующую структуру:
Теперь необходимо создать файл Java в проекте с именем JsonParseTest и вставить следующий код.
Объясним данный код. После создания экземпляра JSONParser мы создаем объект JSONObject.
Он содержит коллекцию пар ключ-значение, из которых мы можем получить каждое значение. Чтобы распарсить объекты, вызывается метод get() экземпляра JSONObject, определяющий указанный ключ в качестве аргумента.
Важно применить подходящий метод. Для типов массивов в файле json используется JSONArray, который представляет упорядоченную последовательность значений. В программном коде итератор должен использоваться для получения каждого значения массива json.
Структура в файле предполагает создание нового объекта JSONObject для получения значений.
Полученный результат парсинга приведен ниже.
Метод с использованием JsonPATH
Два приведенных выше примера требуют полной десериализации JSON в объект Java перед получением значения. Другой альтернативой является использование JsonPATH, который похож на XPath для JSON и позволяет обходить объекты JSON.
Вам нужно добавить JsonPATH, которую можно получить из репозитория maven.(https://mvnrepository.com/artifact/com.jayway.jsonpath/json-path)

Средняя оценка 3.3 / 5. Количество голосов: 19
Спасибо, помогите другим — напишите комментарий, добавьте информации к статье.
Или поделись статьей
Видим, что вы не нашли ответ на свой вопрос.
Помогите улучшить статью.
Напишите комментарий, что можно добавить к статье, какой информации не хватает.
Как и чем парсить Json на Java?
Часто возникает потребность работы с Json, в частности его чтения и парсинга. В Java обычно ты знаешь с каким типом переменных работаешь, а при парсинге Json смущает то, что тип полей может быть любой.
Какие есть способы разбора Json? Как это делать?
Вот, допустим, как достать данные из Json, представленного ниже?
![]()
![]()
Достать данные можно разными способами и, конечно, зависит от задач. Попробую рассмотреть некоторые варианты разбора Json.
Заметка: для каждого из примеров для парсинга будет взят Json из вопроса, чтобы зря не копировать в ответ.
Simple Json
Где взять: здесь / репозиторий на github / или через Maven и пр.
Это самый примитивный способ. По сути, всё, что тут есть — это JSONObject и JSONArray .
- JSONArray может включать в себя несколько объектов JSONObject , его можно обходить циклом на каждой итерации получая объект JSONObject .
- JSONObject — объект, из которого можно доставать его отдельные свойства.
Я бы использовал его для небольших Json строк, где не надо сильно заморачиваться или если не лень писать свой класс-обработчик на основе кода, который продемонстрирован ниже:
Остальная работа с вложенными массивами аналогична. Можно складывать в List, Map и пр.
Где взять: здесь / репозиторий на github / или через Maven и пр.
Позволяет парсить Json также, как и Json-simple, т.е. используя JSONObject и JSONArray (см. документацию), но имеет более мощный инструмент парсинга. Достаточно создать классы, которые повторяют структуру Json‘а. Для парсинга Json из вопроса создадим классы:
Теперь достаточно написать:
Всё! Магия! Чудо! Теперь в person лежит объект с типом Person , в котором находятся данные именно с теми типами, которые были указаны в созданных классах! Теперь можно работать с любым типом, как это привыкли всегда делать: String, Integer, List, Map и всё остальное.
Пример парсинга в Map :
. JSON для разбора:
. Сам разбор выглядит так:
Дополнительно в GSON можно использовать аннотации, например: исключить указанные поля при парсинге, поменять имя переменной (например не personFirstName , а fName ) и многое другое. Подробнее см. в документации.
Jackson
Где взять: здесь / репозиторий на github / или через Maven и пр.
Как и GSON он также позволяет работать используя JSONObject и JSONArray если это требуется, и тоже умеет парсить на основе предоставленных классов (см. пример ниже).
Аналогично в нем можно указывать дополнительные требования за счет аннотаций, например: не парсить указанные поля, использовать кастомный конструктор класса, поменять имя переменной (например не firstName , а fName ) и многое другое. Подробнее см. в документации.
JsonPath
Где взять: через Maven и другие сборщики / репозиторий на github
Относится к так называемым XPath библиотекам. Её суть аналогична xpath в xml, то есть легко получать часть информации из json‘а, по указанному пути. А также позволяет фильтровать по условию.
Пример с выборкой по условию:
![]()
Еще несколько вариантов
LoganSquare
LoganSquare — основана на Jackson‘s streaming API. По демонстрируемым тестам работает быстрее GSON и Jackson. Поэтому хорош для Android.
Где взять: репозиторий на github / или через Maven / Gradle и пр.
- Классы должны быть помечены аннотацией @JsonObject
- Поля должны быть помечены аннотацией @JsonField (с различными варианциями входных параметров, например @JsonField(name=»message») )
- Другие предъявляемые требования: https://github.com/bluelinelabs/LoganSquare/blob/development/docs/Models.md
Moshi
Moshi is a modern JSON library for Android and Java.
Хорош, как утверждают разработчики, для работы с Android.
Где взять: репозиторий на github / или через Maven / Gradle и пр.
Пример разбора Json строки в объект Person :
Пример парсинга в Map :
Genson
Где взять: здесь / репозиторий на github / или через Maven и пр.
За счет создания POJO (создаются классы, которые повторяют структуру Json‘а) — парсится объект из строки, распихивая по нужным полям объектов. Есть возможность фильтровать свойства, включить или исключить поля при парсинге, переименовать, возможность работы с аннотациями и пр. Подробнее в документации.
Разбор в список:
Пример парсинга в Map :
. JSON для разбора:
FastJson
Где взять: через Maven и другие сборщики / репозиторий на github. Непосредственно описание работы с xpath. Осторожно, ̶н̶е̶н̶о̶р̶м̶а̶т̶и̶в̶н̶а̶я̶ ̶л̶е̶к̶с̶и̶к̶а̶ китайский язык.
Относится к XPath аналогам.
![]()
JSON-P
Поддерживает сериализацию и парсинг JSON без предварительного маппинга в классах:
Maven:
Пример разбора строки JSON:
Пример вывода объекта в строку JSON:
Здесь расположена общая информация о парсерах, которая может помочь при выборе и понять, что он умеет. Текст и таблица, представленные ниже, взяты из публикации на Habrahabr: Шпаргалка Java программиста 8. Библиотеки для работы с Json, автор статьи @ВеденинВячеслав
- Data bind
- Tree Model
- Streaming API
- Аналоги XPath (дополнительный способ)
Data bind
Самый популярный и простой способ — вы просто указываете класс, который нужно преобразовать в json, может быть часть полей отмечаете аннотациями (а зачастую даже это необязательно), а библиотека сама превращает этот класс и всю его иерархию классов в json.
Плюсы: наиболее простой из всех
Минусы: скорость и память. Большинство библиотек использует рефлексию и т.п. методы работы с Java классами (хотя не все), что очевидно не очень быстро. К тому же, весь json файл сразу превращается в Java объекты, что может просто исчерпать всю доступную память, если вы попытаетесь обработать очень большой json.
Вывод: если нет проблем с производительностью, памятью и вы не собираетесь обрабатывать многогигабайтные json’ы скорее всего самый лучший способ.
Tree Model
Данный парсер представляет json в виде Java классов таких как Node или `JsonElement c иерархической структурой, а уже сам программист их обходит и получает из них информацию.
Плюсы: обычно быстрее первого способа и проще третьего
Минусы: уступает Data bind по простоте, плюс ряд библиотек способен генерить классы при Data bind, а не использовать рефлексию, в этом случае то что Tree Model будет быстрее не очевидно, к тому же не решается проблема огромных файлов и ограничения памяти.
Streaming API
Самый низкоуровневый способ, по сути программист сам вручную разбирает токены json’a. Зато никаких ограничений по памяти и в теории максимальная производительность.
Плюсы: производительность и минимальное потребление памяти
Минусы: сложность использования
Аналоги XPath
Не очень подходит, если нужно получит всю информацию из json‘a, зато позволяет написав выражение, например $.store.book[*].author получить список всех авторов всех книг из json‘a магазина. То есть легко получать часть информации из json‘а.
Плюсы: позволяет быстро получить информацию из json‘а по сложным критериям
Минусы: не очень подходит, когда нужна все информация из json‘а, не работает в обратную сторону на формирования json‘ов
Таблица библиотек и способы парсинга, которые они поддерживают:
* — Генерация классов для Data bind позволяет сгенерировать классы на стадии компиляции, что в теории должно давать значительный прирост производительности библиотеки,
** — Работает со static inner class имеет смысл только для случая Data bind, возможно ли сериализация и десериализация для случая статических внутренних классов (не статические внутренние классы сериализовать не рекомендуется),
*** — тоже только для случая Data bind можно ли не использовать аннотации или их использование крайне рекомендуется,