0

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();
4

0 に答える 0