我正在使用带有 StringWriter 的 com.google.gson.stream.JsonWriter 来编写一个有点长的 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();
我的问题是,当我尝试关闭编写器时,我得到一个IOException: Incomplete Document。似乎流无法刷新所有数据或其他内容,因为 JSON 在元素中间结束。
像这样:
{
"Id": "1245
Collection 实际上是一个HashMap.values()。我有一种预感,这是因为 HashMap 没有同步或类似的东西。
编辑:我正在关闭作者并以这种方式获取字符串:
jsonWriter.flush();
jsonWriter.close();
String json = stringWriter.toString();