«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.