我正在尝试使用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", "[email protected]");
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”:“ [email protected]”,“ Nome”:“ Andrea”}]}
第二次运行时,它将在列表内添加另一个字段,也保留了第一个字段。
结果:
达蒂:
{“ Clienti”:[{“ Email”:“ [email protected]”,“ Nome”:“ Andrea”},{“ Email”:“ [email protected]”,“ Nome”:“ Andrea”}] }
从第三次运行开始,它不再上传文件,而不是向现有的2添加另一个字段,它只是打印第二个结果。
我尝试了许多选项,但仍然不明白如何添加第三个字段而不丢失前两个字段,我该如何解决呢?
最佳答案
解决了将它放在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();
}
关于java - 使用Java在JSON文件上多次写入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59789419/