[英]How to read multiple JSON files and write it to a single JSON file using java
[英]How to write multiple records to JSON in file on Java
我需要在一个文件中写入多个json,问题是每次插入时都插入如下:
{"1":"{\"id\":\"1\"}"**}{**"2":"{\"id\":\"2\"}"**}{**"3":"{\"id\":\"3\"}"}
并且我需要可以读取JSON的链:
{"1":"{\"id\":\"1\"}"**,**"2":"{\"id\":\"2\"}"**,**"3":"{\"id\":\"3\"}"}
我的代码是:
public void writeMci(String mci, String nombreMci) throws Exception{
FileReadWrite a=new FileReadWrite();
JSONObject vjo = new JSONObject();
vjo.put(nombreMci, mci);
try {
BufferedWriter write=new BufferedWriter(new FileWriter("c:\\JSON.json", true));
write.write(vjo.toString());
write.flush();
write.close();
} catch (IOException e) {
//manejar error
}
System.out.print(vjo);
}
你想要的线
{"1":"{\"id\":\"1\"}"**,**"2":"{\"id\":\"2\"}"**,**"3":"{\"id\":\"3\"}"}
也是不合法的,我认为您的意思是(至少)是这样的:
{"1":"{\"id\":\"1\"}","2":"{\"id\":\"2\"}","3":"{\"id\":\"3\"}"}
请注意,这不是 JSON数组,它是一个对象,其字符串字段分别称为1 2和3,恰好包含JSON语法化的字符串值。 尽管不是非法的,但您实际上想要的是一个非常可疑的问题
现在,可能是您的意思
{"1":{"id":"1"},"2":{"id":"2"},"3":{"id":"3"}}
还是一个对象,但是对象字段分别称为1 2和3,而对象只有1个字段,称为id? 无论如何( 免责声明 :我自己不是org.json库用户-参见下文-因此不保证代码的准确性:)):
// Create the outer container
JSONObject outer = new JSONObject();
// Create a container for the first contained object
JSONObject inner1 = new JSONObject();
inner1.put("id",1);
// and add that to outer
outer.put("1",inner1);
// Create a container for the second contained object
JSONObject inner2 = new JSONObject();
inner2.put("id",2);
// and add to outer as well
outer.put("2",inner2);
// Create a container for the third contained object
JSONObject inner3 = new JSONObject();
inner3.put("id",3);
// and add that to outer
outer.put("3",inner3);
// at this point
outer.toString()
// should return the JSON String from my last step.
如果您实际上希望将其作为数组,则需要将对象放入JSONArray中,并将该数组包装为对象内的命名字段。 最终结果将大致如下所示:
{"data": [{"id":"1"},{"id":"2"},{"id":"3"}]}
内部对象的代码与上面的相同,但是内部对象和外部对象之间有一个新层(数组):
JSONArray middle = new JSONArray();
...
middle.add(inner1);
...
middle.add(inner2);
...
middle.add(inner3);
...
outer.put("data",middle);
仍然不确定这是否是您真正想要的,但是我认为这是迈向解决方案的第一步。 话虽如此,我建议您切换到比您显然正在使用的json.org中更好的JSON Java库。 在这里可以找到有关可用的不同库的一些反馈,对于我的项目,我从很长一段时间以来就一直在使用Jackson,并且对此感到非常满意,但是与之相关的SO问题讨论了其他几种出色的替代方案。
您应该编写两个对象,如下所示:
write.write(vjo.toString());
write.newLine();
write.write(conb.toString());
write.newline();
write.flush();
write.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.