Java 流式编写Json
我在Java 流式编写Json,java,json,io,stream,gson,Java,Json,Io,Stream,Gson,我在ArrayList中有一大组JsonObjects。我需要将这些JsonObjects添加到JsonArray并将其写入文件。我正在使用Gson,下面是我的代码 private void myWriter(List<JsonObject> jsonObjectHolder, int number) throws IOException { System.out.println("Starting to write the JSON File");
ArrayList
中有一大组JsonObject
s。我需要将这些JsonObject
s添加到JsonArray
并将其写入文件。我正在使用Gson
,下面是我的代码
private void myWriter(List<JsonObject> jsonObjectHolder, int number) throws IOException
{
System.out.println("Starting to write the JSON File");
//Add everything into a JSONArray
JsonArray jsonArrayNew = new JsonArray();
for(int i=0;i<jsonObjectHolder.size();i++)
{
//System.out.println("inside array: "+i);
JsonObject o = jsonObjectHolder.get(i);
System.out.println("inside array "+i+": "+o.get("title"));
jsonArrayNew.add(jsonObjectHolder.get(i));
}
System.out.println("Size: "+jsonArrayNew.size());
//Write it to the File
File file= new File("items.json");
FileWriter fw = new FileWriter(file);;
fw.write(jsonArrayNew.toString());
fw.flush();
fw.close();
System.out.println("outside array");
}
请让我知道这是否是正确的方法。您可以使用Gson以如下方式传输您的列表:
private void myWriter(List<JsonObject> jsonObjectHolder, Gson gson) throws IOException
{
JsonWriter writer = new JsonWriter(new FileWriter(new File("items.json")));
writer.beginArray();
for (JsonObject jsonObject : jsonObjectHolder)
{
gson.toJson(jsonObject, writer);
}
writer.endArray();
writer.close();
}
private void myWriter(List jsonObjectHolder,Gson Gson)抛出IOException
{
JsonWriter=newjsonwriter(newfilewriter(新文件(“items.json”)));
writer.beginArray();
用于(JsonObject JsonObject:JsonObject持有人)
{
toJson(jsonObject,writer);
}
writer.endArray();
writer.close();
}
这假设您有一个可以使用的
Gson
实例。如果您不这样做,您可以将writer.beginObject()
与writer.endObject()
一起使用,并手动向writer添加属性,但我不建议这样做,因为您已经完成了构建JsonObject
的工作,谢谢您的回复。Gson对象的意思是,就这么简单Gson g=new Gson()
。我可以简单地在方法内部创建这个实例,对吗?是的,你可以。如果需要,您可能希望在其他地方创建,但不应该在这里创建,因为您正在处理JsonObject
,因此内联是可以的。谢谢您的回复。我更新了我的帖子,包括你的答案。请看一看。好的,我的答案有问题吗?或者你在找别的东西吗?这似乎解决了您的问题。我想他不想生成完整的对象,然后写入它,而是在收集时写入它(从db或其他地方),所以在生成每一行时写入它。这样就不需要写入内存阵列。直接到输出流。你的帖子在这方面很有帮助。
private void myWriter(List<JsonObject> jsonObjectHolder, Gson gson) throws IOException
{
JsonWriter writer = new JsonWriter(new FileWriter(new File("items.json")));
writer.beginArray();
for (JsonObject jsonObject : jsonObjectHolder)
{
gson.toJson(jsonObject, writer);
}
writer.endArray();
writer.close();
}