使用 Java 在 JSON 文件上多次写入

Writing multiple times on a JSON file with Java

我正在尝试使用 JSON-Simple 和 Java 在 JSON 文件上多次写入,但在第二次 运行 之后我遇到了一些问题。我是 JSON 的新手,所以这只是了解它的一种方式,这里是代码:

public class Writer{
    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws IOException {
        JSONParser parser = new JSONParser();
        JSONObject outer = new JSONObject(); 
        JSONObject inner = new JSONObject();
        JSONObject data = new JSONObject();
        ArrayList<JSONObject> arr = new ArrayList<JSONObject>(); 
        inner.put("Name", "Andrea");
        inner.put("Email", "andrea@mail.com");
        arr.add(inner);
        outer.put("Clienti", arr);
        System.out.println("Dati: " + outer);   
        File file = new File("temp.json");
        if(file.exists()) {
                PrintWriter write = new PrintWriter(new FileWriter(file));
                Iterator<JSONObject> iterator = arr.iterator();
                while(iterator.hasNext()) {
                        JSONObject it = iterator.next();
                        data = (JSONObject) it; 
                    }
                arr.add(data);
                outer.put("Clienti", arr);
                System.out.println("Dati: " + outer);
                write.write(outer.toString());
                write.flush();
                write.close();
            } else {
                PrintWriter write = new PrintWriter(new FileWriter(file)); 
                write.write(outer.toString());
                write.flush();
                write.close();
            }
        }
    }

所以,我只是想尝试添加相同的东西而不丢失我之前添加的内容,但是当我 运行:

Dati: {"Clienti":[{"Email":"andrea@gmail.com","Nome":"Andrea"}]}

Dati: {"Clienti":[{"Email":"andrea@gmail.com","Nome":"Andrea"},{"Email":"andrea@gmail.com","Nome":"Andrea"}]}

我尝试了很多选项,但仍然无法理解如何在不丢失前两个字段的情况下添加第三个字段,我该如何解决这个问题?

解决了将其放在 if 子句中的问题:

if(file.exists()) {
            Object obj = parser.parse(new FileReader("temp.json"));
            JSONObject jsonObject = (JSONObject) obj;
            JSONArray array = (JSONArray) jsonObject.get("Clienti");
            PrintWriter write = new PrintWriter(new FileWriter(file));
            Iterator<JSONObject> iterator = array.iterator();
            while(iterator.hasNext()) {
                JSONObject it = iterator.next();
                data = (JSONObject) it; 
                System.out.println("Data" + data);
                arr.add(data);
                }
            arr.add(inner);
            System.out.println(arr);
            outer.put("Clienti", arr);
            System.out.println("Dati: " + outer);
            write.write(outer.toString());
            write.flush();
            write.close();
    }