I would like to write JSON to a Stream by building the document up explicitly. For example:
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();
This would produce:
[
  {
    "foo": 1,
    "bar": 2.3
  }
]
The benefit of this approach is that nothing needs to be buffered in memory. In my situation, I'm writing quite a lot of JSON to the stream. Solutions such as this one involve creating all your objects in memory, then serialising them to a large string in memory, then finally writing this string to the stream and garbage collecting, probably from the LOH. I want to keep my memory use low, writing out elements while reading data from another file/DB/etc stream.
This kind of approach is available in C++ via the rapidjson library.
I've searched around a fair bit for this and haven't found a solution.
 
    