Добавление элемента в JsonArray

Нужно реализовать добавление элемента в существующий JsonArray. Изначально он выглядит примерно вот так:

введите сюда описание изображения

Новый элемент по какой-то причине добавляется вот в таком виде (см. task4):

введите сюда описание изображения

Привожу код добавления элемента:

public static void addTask(String filepath) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Введите название задачи:");
    String taskName = sc.nextLine();
    System.out.println("Введите описание задачи:");
    String taskDescription = sc.nextLine();
    String taskState = "No";

    Task task = new Task(taskName, taskDescription, taskState);

    JsonArray json = readJson(filepath);
    Gson gson = new Gson();
    json.add(gson.toJson(task));
    try (Writer writer = new FileWriter(filepath)) {
        gson.toJson(json, writer);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

Также код класса Task:

public class Task {
    public String taskName;
    public String taskDescription;
    public String taskState;

    public Task(String taskName, String taskDescription, String taskState) {
        this.taskName = taskName;
        this.taskDescription = taskDescription;
        this.taskState = taskState;
    }
}

В чем моя ошибка? Изначально Json создается из коллекции объектов класса Task, затем я хочу иметь возможность добавлять новый такой объект к уже существующему Json.


Ответы (1 шт):

Автор решения: IR42

Вы добавляете task как строку JSON вида, а нужно добавлять как JsonElement

JsonElement taskElement = gson.fromJson(gson.toJson(task), JsonElement.class);
json.add(taskElement);
→ Ссылка