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();
私の問題は、ライターを閉じようとすると、IOException: Incomplete Document が発生することです。また、JSON が要素の途中で終了するため、ストリームがすべてのデータまたは何かをフラッシュできないようです。
このような:
{
"Id": "1245
Collection は実際にはHashMap.values()です。HashMap が同期されていないか、そのようなものが原因であるという予感があります。
編集:ライターを閉じて、この方法で文字列を取得しています:
jsonWriter.flush();
jsonWriter.close();
String json = stringWriter.toString();