RapidJSON:使用文档或编写器构建之间的差异

RapidJSON : Differences between building using Document or Writer

本文关键字:构建 之间 文档 RapidJSON      更新时间:2023-10-16

我想用rapidJSON来构建JSON文件。
我注意到(至少(有 2 个选项可以这样做。
第一种是直接使用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尺寸上类型控制较多的明显差异外,还有性能差异吗? 两个分配相同吗?

Document是一种

用于在内存中存储JSON树(又名DOM(的数据结构。 需要WriterDocument字符串化(转储/序列化(成 JSON:

d.Accept(writer);

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

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

附言在当前版本的 RapidJSON 中,对象键最好使用 writer.Key("hello") 而不是 writer.String("hello")