我想Stream通过显式构建文档来编写JSON .例如:
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();
Run Code Online (Sandbox Code Playgroud)
这会产生:
[
{
"foo": 1,
"bar": 2.3
}
]
Run Code Online (Sandbox Code Playgroud)
这种方法的好处是不需要在内存中缓冲任何内容.在我的情况下,我在流中写了很多JSON.像这样的解决方案涉及在内存中创建所有对象,然后将它们序列化为内存中的大字符串,然后最终将此字符串写入流和垃圾收集,可能来自LOH.我想保持内存使用率低,在从另一个文件/ DB/etc流中读取数据时写出元素.
这种方法可以通过rapidjson库在C++中使用.
我已经搜索了很多,但没有找到解决方案.
Dre*_*kes 17
结果我需要谷歌更长一点.
JSON.NET确实通过它的JsonWriter类支持它.
我的例子是:
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();
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11023 次 |
| 最近记录: |