На этом шаге мы рассмотрим класс JsonWriter
Ниже приведены основные функции класса JsonWriter.
Функция | Описание |
---|---|
JsonWriter beginArray() | Служит для информировании, что сейчас будет добавляться список значений. |
JsonWriter endArray() | Служит для информировании, что добавление списка закончено. |
JsonWriter beginObject() | Служит для информировании, что сейчас будет добавляться объект. |
JsonWriter endObject() | Служит для информировании, что добавление объекта закончено. |
void close() | Закрывает “врайтер”. |
JsonWriter name(String name) | Записывает имя ключа объекта. |
JsonWriter nullValue() | Записывает пустое значение. |
JsonWriter value(boolean value) | Записывает значение. Тип значения указан в имени функции. |
JsonWriter value(long value) | |
JsonWriter value(double value) | |
JsonWriter value(Number value) | |
JsonWriter value(String value) |
Обратим внимание, что почти все функции таблицы 1 возвращают текущий JsonWriter. Таким образом, можно производить вызов функций, выстраивая их в цепочку вызовов.
Приведем ниже пример использования класса JsonWriter.
// Класс User public class User { private int id; private String firstName; private String lastName; public User(int id, String firstName, String lastName) { this.id = id; this.firstName = firstName; this.lastName = lastName; } public int getId() { return id; } public String getFirstName() { return firstName; } public String getLastName() { return lastName; } @Override public String toString() { return "id = " + id + "\n\tfirstName = " + firstName + "\n\tlastName = " + lastName; } }
// Класс Main import com.google.gson.stream.JsonWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class Main { public static final int MOCK_SIZE = 3; public static void main(String[] args) throws IOException { List<User> users = getMockUsers(MOCK_SIZE); File file = new File("src/main/resources/users.json"); // Создаем врайтер JsonWriter writer = new JsonWriter(new FileWriter(file)); // говорим, что оступ будет два пробела относительно родителя writer.setIndent(" "); // пишем в файл данные writeUsers(writer, users); // обязательно закрываем врайтер writer.close(); } /** * Функция-генератор списка пользователей * * @param count Количество пользователей * @return Список пользователей */ private static List<User> getMockUsers(int count) { List<User> users = new ArrayList<User>(); for (int i = 0; i < count; i++) { int id = i + 1; String firstName = "first_name_" + id; String lastName = "last_name_" + id; User user = new User(id, firstName, lastName); users.add(user); } return users; } /** * Пишет список в json файл * * @param writer врайтер * @param users Список пользователей */ private static void writeUsers(JsonWriter writer, List<User> users) throws IOException { writer.beginArray(); for (User user : users) { writeUser(writer, user); } writer.endArray(); } /** * Пишет информацию об одном пользователе в json файл * * @param writer врайтер * @param user Пользователь */ private static void writeUser(JsonWriter writer, User user) throws IOException { writer.beginObject(); writer.name("id").value(user.getId()); writer.name("first_name").value(user.getFirstName()); writer.name("last_name").value(user.getLastName()); writer.endObject(); } }
Проект можно взять здесь
Рис. 1. Результат выполнения программы
На следующем шаге мы рассмотрим класс JsonParser