Запазване на данни в JSON файл с Gson

1. Общ преглед

Gson е Java библиотека, която ни позволява да конвертираме Java Objects в 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.

Първо ще създадем прост потребителски клас:

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); } }

Сега ще съхраним потребителски обект като JSON:

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

Изходът на файла ще бъде:

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

Ако полето е маркирано като преходно , то се игнорира по подразбиране и не е включено в 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));

В този случай изходът на файла ще бъде масив от потребителски обекти:

[{"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.