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

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

1. обзор

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

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

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

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


    com.google.code.gson
    gson
    2.8.5

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. В результате полеnationality отсутствует в выходных данных 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(). Доступные варианты перечисленыhere.

5. Заключение

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

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