Java JsonWriter IOException不完整文档

Java JsonWriter IOException不完整文档,java,json,ioexception,Java,Json,Ioexception,我使用com.google.gson.stream.JsonWriter和StringWriter来编写一个稍长的JSON StringWriter stringWriter = new StringWriter(); JsonWriter jsonWriter = new JsonWriter(stringWriter); 然后迭代集合并编写JSON jsonWriter.name("Elements").beginArray(); Collection<Element> col

我使用com.google.gson.stream.JsonWriter和StringWriter来编写一个稍长的JSON

StringWriter stringWriter = new StringWriter();
JsonWriter jsonWriter = new JsonWriter(stringWriter);
然后迭代集合并编写JSON

jsonWriter.name("Elements").beginArray();
Collection<Element> collection = someObject.getCollection();
    for(Element e : collection){
        jsonWriter.beginObject()
            .name("Id").value(e.getId())
        .endObject();
    }
jsonWriter.endArray();
该集合实际上是一个HashMap.values()。我有一种预感,那是因为HashMap没有同步或类似的东西

编辑:我正在关闭编写器并通过以下方式获取字符串:

jsonWriter.flush();
jsonWriter.close();
String json = stringWriter.toString();

请给出一个简短但完整的例子来说明这个问题。代表我犯了一个愚蠢的错误。我在列表上方编写了其他代码,但我缺少一个endObject()。。。我是为Android开发的,LogCat有一个字符限制,所以当我打印出字符串时,它看起来就像编写器没有完成刷新或其他操作一样。请注意,对beginObject()和endObject()进行计数,至少3次!!很抱歉时间不够。我也搞砸了,没有endObject()。谢谢你发表评论。
jsonWriter.flush();
jsonWriter.close();
String json = stringWriter.toString();