c# - Writing JSON to a stream without buffering the string in memory -
i write json stream building document explicitly. 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 produce:
[ { "foo": 1, "bar": 2.3 } ] the benefit of approach nothing needs buffered in memory. in situation, i'm writing quite lot of json stream. solutions such this one involve creating objects in memory, serialising them large string in memory, writing string stream , garbage collecting, loh. want keep memory use low, writing out elements while reading data file/db/etc stream.
this kind of approach available in c++ via rapidjson library.
i've searched around fair bit , haven't found solution.
turns out needed google bit longer.
json.net indeed support via jsonwriter class.
my example written:
stream stream = ...; using (var streamwriter = new streamwriter(stream)) using (var writer = new jsontextwriter(streamwriter)) { writer.formatting = formatting.indented; writer.writestartarray(); { writer.writestartobject(); { writer.writepropertyname("foo"); writer.writevalue(1); writer.writepropertyname("bar"); writer.writevalue(2.3); } writer.writeendobject(); } writer.writeendarray(); }
Comments
Post a Comment