我调试并发现文件在每次迭代后都会被重新写入。
另外,如果我不关闭文件,什么也不会写入文件。我使用的是bufferedwriter—我们需要显式关闭文件还是由它来处理?
这是我的密码:
JSONArray jsonArr = new JSONArray(myrecords);
for (int i = 0; i < jsonArr.length(); i++) {
JSONObject jsonObj = jsonArr.getJSONObject(i);
System.out.println(jsonObj);
BufferedWriter writer = new BufferedWriter(new FileWriter("JsonFilenew.json"));
writer.write(jsonObj.toString());
String records = new String(Files.readAllBytes(Paths.get("JsonFilenew.json")));
JFlat flatMe = new JFlat(records);
flatMe.json2Sheet().headerSeparator().getJsonAsSheet();
file.close();
flatMe.write2csv("new.csv");
}
1条答案
按热度按时间mwngjboj1#
据我所知,你的代码有两个问题:
如果不使用第二个参数而使用filewriter,则会破坏原始文件-如果要附加到该文件,请尝试
new FileWriter("JsonFilenew.json",true)
我认为读取文件并将其作为平面json写回的代码应该在循环之外,因为这应该只执行一次。更多:您的另一个问题是,仅仅将大量的json文件粘在一起并不能成为合法的json。您需要使其成为合法的json数组(即用“[”打开);每个元素用“,”分隔,并用“]”闭合