【发布时间】:2013-08-16 09:20:41
【问题描述】:
我想通过显式构建文档将 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。诸如this one 之类的解决方案涉及在内存中创建所有对象,然后将它们序列化为内存中的一个大字符串,最后将该字符串写入流和垃圾收集,可能来自LOH。我想保持低内存使用,在从另一个文件/DB/etc 流中读取数据的同时写出元素。
这种方法在 C++ 中可以通过 rapidjson library 获得。
我已经为此搜索了很多,但没有找到解决方案。
【问题讨论】: