1

我想用来rapidJSON构建 JSON 文件。
我注意到有(至少)两个选项可以这样做。
第一种是rapidJSON::Writer直接使用:

StringBuffer s;
Writer<StringBuffer> writer(s);
writer.StartObject();
writer.String("hello");
...

另一个正在使用rapidJSON::Document

Document d;
d.SetObject();
d.AddMember("hello", "world", d.GetAllocator());
...

除了侧面易用性的明显差异Document和尺寸上更多的类型控制Writer之外,是否有任何性能差异?两个分配是一样的吗?

4

1 回答 1

2

Document是一种用于在内存中存储 JSON 树(又名 DOM)的数据结构。Writer需要将 a 字符串化(转储/序列化)Document为 JSON:

d.Accept(writer);

因此,如果您的应用程序只需要编写 JSON,并且可以Writer轻松应用,则首选Document. 这是因为Document需要内存分配和额外的开销。

但是,Document更容易解析和修改 JSON。

PS 在当前版本的 RapidJSON 中,更喜欢使用writer.Key("hello")而不是writer.String("hello")for 对象键。

于 2014-12-12T01:32:37.420 回答