Сохранить данные в файл 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.