Запись JSON в файл с помощью GSON
Мне нужно записать новый объект в users с помощью GSON
data.json
{
users: [
{
"name": "Alex",
"age": 20
},
{
"name": "Dima",
"age": 12
},
{
"name": "Masha",
"age": 18
}
]
}
Запись
try(FileWriter writer = new FileWriter(path,true)) {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
User user = new User();
user.setName("Carl");
user.setAge(14);
writer.write(gson.toJson(user));
writer.flush();
} catch (IOException ex) {
System.out.println(ex);
}
Получается при такой записи следующее:
{
users: [
{
"name": "Alex",
"age": 20
},
{
"name": "Dima",
"age": 12
},
{
"name": "Masha",
"age": 18
}
]
}{
"name": "Carl",
"age": 14
}
Нужно, чтобы запись была такой:
{
users: [
{
"name": "Alex",
"age": 20
},
{
"name": "Dima",
"age": 12
},
{
"name": "Masha",
"age": 18
},
{
"name": "Carl",
"age": 14
}
]
}
Ответы (1 шт):
Автор решения: Irshat Khuzin
→ Ссылка
Для того, чтобы добавить новый объект в массив users в data.json с помощью GSON, Вам необходимо сначала прочитать существующий файл data.json, десериализовать его в объект класса Data, добавить новый объект в массив users, а затем сериализовать и записать обратно в файл data.json. Пример кода может выглядеть так:
Gson gson = new Gson();
try (FileReader reader = new FileReader(path)) {
Data data = gson.fromJson(reader, Data.class);
User user = new User();
user.setName("Carl");
user.setAge(14);
data.users.add(user);
try (FileWriter writer = new FileWriter(path)) {
gson.toJson(data, writer);
}
} catch (IOException ex) {
System.out.println(ex);
}
PS: Вы должны создать класс Data и User для сериализации и десериализации. В классе Data должен быть массив List users.