Как сохранить несколько пользовательских объектов из списка массивов в файл JSON в Java? - PullRequest
0 голосов
/ 18 мая 2018

obBelow - мой код Java для записи в файл JSON. Я совершенно новичок в использовании JSON. У меня есть arraylist с именем myAnimals, и у него есть несколько объектов животных (ленивец, кошка и т. Д.). Я хочу запустить цикл, который проходит через эти объекты и заполняет файл JSON объектами, хранящими их. Первый .put - это просто пример того, как он будет работать, вместо 0, в идеале, у меня должна быть ссылочная переменная, такая как i, которая будет перебирать, чтобы я мог добавить все. Идея состоит в том, что он запускается каждый раз, когда в массив добавляется новый объект для обновления jsonfile. Если кто-нибудь может посоветовать мне, как это сделать, это было бы здорово. В настоящее время проблема с циклом состоит в том, что файл будет перезаписываться каждый раз и иметь только один объект json, а не много.

public void writeJson(){
    JSONObject obj = new JSONObject();
    obj.put("name", myAnimals.get(0).getAnimalName());
    obj.put("penType", ?);
    obj.put("landSpace", ?);
    obj.put("waterSpace", ?);
    obj.put("airSpace", ?);

    try (FileWriter file = new FileWriter("animals.json")) {

        file.write(obj.toJSONString());
        file.flush();

    } catch (IOException e) {
        e.printStackTrace();
    }

}

1 Ответ

0 голосов
/ 18 мая 2018

изменить

try (FileWriter file = new FileWriter("animals.json")) {

на

try (FileWriter file = new FileWriter("animals.json", true)) {

добавление истинного логического значения добавится в конец вашего файла вместо его перезаписи.Это будет работать для добавления новых в ваш файл, чтобы поддерживать его в актуальном состоянии.

Однако вам нужно учитывать случай, когда пользователь удаляет животное из вашего списка.В этом случае зациклите весь список животных и переписайте все, что находится в вашем файле animals.json в то время.

...