Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在java中将数组列表中的多个自定义对象存储到json文件中?_Java_Json_Object_Arraylist_Filewriter - Fatal编程技术网

如何在java中将数组列表中的多个自定义对象存储到json文件中?

如何在java中将数组列表中的多个自定义对象存储到json文件中?,java,json,object,arraylist,filewriter,Java,Json,Object,Arraylist,Filewriter,下面是我要写入JSON文件的Java代码。我对使用JSON非常陌生。我有一个名为myAnimals的arraylist,它有多个动物对象(树懒、猫等)。我想运行一个循环,遍历这些对象并用存储它们的对象填充JSON文件。第一个.put只是它将如何运行的一个示例,而不是0,理想情况下,我应该有一个像I这样的引用变量,它将循环通过,这样我就可以添加所有变量。其思想是每次向arraylist添加新对象时都会运行此操作,以保持jsonfile的更新。如果有人能给我建议怎么做,那就太好了。 循环的当前问题是

下面是我要写入JSON文件的Java代码。我对使用JSON非常陌生。我有一个名为myAnimals的arraylist,它有多个动物对象(树懒、猫等)。我想运行一个循环,遍历这些对象并用存储它们的对象填充JSON文件。第一个.put只是它将如何运行的一个示例,而不是0,理想情况下,我应该有一个像I这样的引用变量,它将循环通过,这样我就可以添加所有变量。其思想是每次向arraylist添加新对象时都会运行此操作,以保持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();
    }

}
改变

添加真布尔值将附加到文件末尾,而不是覆盖它。这将有助于向文件中添加新文件,使其保持最新


然而,你需要考虑用户从列表中删除动物的情况。在这种情况下,循环整个arraylist of animals并覆盖此时animals.json文件中的任何内容。

如果您只是将json对象写入文件,则文件的结果内容将不是有效的json,您可能应该使用jsonarrayHi,这非常有效,谢谢!然而,添加的对象是在关闭后添加的,这显然会产生错误,我如何解决这个问题?
try (FileWriter file = new FileWriter("animals.json")) {
try (FileWriter file = new FileWriter("animals.json", true)) {