1. Обзор
При работе с JSON в Java с использованием библиотеки Gson у нас есть несколько вариантов преобразования необработанного JSON в другие классы или структуры данных, с которыми нам будет легче работать.
Например, мы можем преобразовать строки JSON в Map<String, Object>
или создать собственный класс с сопоставлениями . Однако иногда удобно иметь возможность преобразовать наш JSON в универсальный объект.
В этом уроке мы узнаем, как Gson
может предоставить нам JsonObject
из строки.
2. Зависимость от Maven
Во-первых, нам нужно включить зависимость gson
в наш pom.xml
:
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>
Мы можем найти последнюю версию gson
на Maven Central .
3. Использование JsonParser
Первый подход, который мы рассмотрим для преобразования строки
JSON в JsonObject
, представляет собой двухэтапный процесс, в котором используется класс JsonParser
.
Для первого шага нам нужно разобрать нашу исходную строку
.
Gson предоставляет нам парсер под названием JsonParser,
который анализирует указанную строку
JSON в дерево разбора JsonElements
:
public JsonElement parse(String json) throws JsonSyntaxException
Как только наша строка
будет проанализирована в дереве JsonElement
, мы воспользуемся методом getAsJsonObject()
, который вернет желаемый результат.
Давайте посмотрим, как мы получим наш окончательный JsonObject
:
String json = "{ \"name\": \"ForEach\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("ForEach"));
Assert.assertTrue(jsonObject.get("java").getAsBoolean() == true);
4. Использование fromJson
Во втором подходе мы увидим, как создать экземпляр Gson
и использовать метод fromJson
. Этот метод десериализует указанную строку
JSON в объект указанного класса:
public <T> T fromJson(String json, Class<T> classOfT) throws JsonSyntaxException
Давайте посмотрим, как мы можем использовать этот метод для анализа нашей строки
JSON , передав класс JsonObject
в качестве второго параметра:
String json = "{ \"name\": \"ForEach\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);
Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("ForEach"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);
5. Вывод
В этой краткой статье мы узнали о двух разных способах использования библиотеки Gson для получения JsonObject из
строки
в формате JSON в Java. Мы должны использовать тот, который лучше подходит для наших промежуточных операций JSON.
Как обычно, исходный код этих примеров доступен на GitHub .