«1. Обзор
При работе с JSON в Java с использованием библиотеки Gson у нас есть несколько вариантов преобразования необработанного JSON в другие классы или структуры данных, с которыми нам будет легче работать.
Например, мы можем преобразовать строки JSON в Map\u003cString, Object\u003e или создать собственный класс с сопоставлениями.
Иногда, однако, удобно иметь возможность преобразовать наш 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\": \"Baeldung\", \"java\": true }";
JsonObject jsonObject = new JsonParser().parse(json).getAsJsonObject();
Assert.assertTrue(jsonObject.isJsonObject());
Assert.assertTrue(jsonObject.get("name").getAsString().equals("Baeldung"));
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\": \"Baeldung\", \"java\": true }";
JsonObject convertedObject = new Gson().fromJson(json, JsonObject.class);
Assert.assertTrue(convertedObject.isJsonObject());
Assert.assertTrue(convertedObject.get("name").getAsString().equals("Baeldung"));
Assert.assertTrue(convertedObject.get("java").getAsBoolean() == true);
5. Заключение
В этом базовом руководстве мы узнали о двух разных способах использования библиотеки Gson для получения JsonObject из строки в формате JSON в Java. Следовательно, мы должны использовать тот, который лучше подходит для наших промежуточных операций JSON.
Как обычно, исходный код этих примеров доступен на GitHub.