Перейти к основному содержимому

Сохранение данных в файл JSON с помощью Gson

· 3 мин. чтения

1. Обзор

Gson — это библиотека Java, которая позволяет нам преобразовывать объекты Java в представление JSON. Мы также можем использовать его наоборот, чтобы преобразовать строку JSON в эквивалентный объект Java.

В этом кратком руководстве мы узнаем, как сохранять различные типы данных Java в виде JSON в файле.

2. Зависимости Maven

Прежде всего, нам нужно добавить зависимость Gson в pom.xml . Это доступно в Maven Central :

<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.5</version>
</dependency>

3. Сохранение данных в файл JSON

Мы будем использовать метод toJson(Object src, Appendable Writer) из класса Gson , чтобы преобразовать тип данных Java в JSON и сохранить его в файле. Конструктор Gson() создает объект Gson с конфигурацией по умолчанию:

Gson gson = new Gson();

Теперь мы можем вызвать toJson () для преобразования и сохранения объектов Java.

Давайте рассмотрим несколько примеров с различными типами данных в Java.

3.1. примитивы

Сохранение примитивов в файл JSON довольно просто с помощью GSON:

gson.toJson(123.45, new FileWriter(filePath));

Здесь filePath обозначает расположение файла. Выходной файл будет просто содержать примитивное значение:

123.45

3.2. Пользовательские объекты

Точно так же мы можем хранить объекты в формате JSON.

Во-первых, мы создадим простой класс User :

public class User {
private int id;
private String name;
private transient String nationality;

public User(int id, String name, String nationality) {
this.id = id;
this.name = name;
this.nationality = nationality;
}

public User(int id, String name) {
this(id, name, null);
}
}

Теперь мы сохраним объект User как JSON:

User user = new User(1, "Tom Smith", "American");
gson.toJson(user, new FileWriter(filePath));

Вывод файла будет:

{"id":1,"name":"Tom"}

Если поле помечено как transient , оно по умолчанию игнорируется и не включается в сериализацию или десериализацию JSON. В результате поле национальности отсутствует в выходных данных JSON.

Также по умолчанию Gson опускает пустые поля во время сериализации. Итак, если мы рассмотрим этот пример:

gson.toJson(new User(1, null, "Unknown"), new FileWriter(filePath));

вывод файла будет:

{"id":1}

Позже мы увидим, как включать пустые поля в сериализацию.

3.3. Коллекции

Мы можем хранить коллекцию объектов аналогичным образом:

User[] users = new User[] { new User(1, "Mike"), new User(2, "Tom") };
gson.toJson(users, new FileWriter(filePath));

В этом случае выходным файлом будет массив объектов User :

[{"id":1,"name":"Mike"},{"id":2,"name":"Tom"}]

4. Использование GsonBuilder

Чтобы настроить параметры конфигурации Gson по умолчанию, мы можем использовать класс GsonBuilder .

Этот класс следует шаблону компоновщика и обычно используется, сначала вызывая различные методы конфигурации для установки желаемых параметров, и, наконец, вызывая метод create() :

Gson gson = new GsonBuilder()
.setPrettyPrinting()
.create();

Здесь мы устанавливаем параметр красивой печати, который по умолчанию имеет значение false . Точно так же, чтобы включить нулевые значения в сериализацию, мы можем вызвать serializeNulls() . Доступные опции перечислены здесь .

5. Вывод

В этой быстрой статье мы поняли, как сериализовать различные типы данных Java в файл JSON. Чтобы изучить различные статьи о JSON, ознакомьтесь с другими нашими руководствами по этой теме.

Как всегда, фрагменты кода доступны в этом репозитории GitHub .