12

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++ で利用できます。

私はこれについてかなり検索しましたが、解決策は見つかりませんでした。

4

1 に答える 1