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 .