Stream
ドキュメントを明示的に作成して、JSON を a に書き込みたいと思います。例えば:
var stream = ...;
var writer = new JsonWriter(stream);
writer.BeginArray();
{
writer.BeginObject();
{
writer.String("foo");
writer.Number(1);
writer.String("bar");
writer.Number(2.3);
}
writer.EndObject();
}
writer.EndArray();
これにより、次が生成されます。
[
{
"foo": 1,
"bar": 2.3
}
]
このアプローチの利点は、メモリに何もバッファリングする必要がないことです。私の状況では、大量の JSON をストリームに書き込んでいます。このような解決策には、すべてのオブジェクトをメモリ内に作成し、それらをメモリ内の大きな文字列にシリアル化し、最後にこの文字列をストリームに書き込み、おそらくLOHからガベージ コレクションを行う必要があります。別のファイル/DB/etcストリームからデータを読み取りながら要素を書き出すことで、メモリ使用量を低く抑えたいと考えています。
この種のアプローチは、 rapidjson ライブラリを介して C++ で利用できます。
私はこれについてかなり検索しましたが、解決策は見つかりませんでした。