Я хотел бы написать JSON в Stream
, явно создав документ. Например:
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. Я хочу, чтобы моя память использовалась на низком уровне, записывая элементы при чтении данных из другого потока файлов/БД/и т.д.
Такой подход доступен в C++ через rapidjson library.
Я искал немного для этого и не нашел решения.