RapidJSON:使用Document或Writer构建之间的差异

时间:2014-12-11 08:30:41

标签: c++ json rapidjson

我想使用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大小的更多类型控制方面明显不同之外,是否有任何性能差异?分配是否相同?

1 个答案:

答案 0 :(得分:2)

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

d.Accept(writer);

因此,如果您的应用程序只需要编写JSON,并且它可以轻松应用Writer,那么它优先于Document。这是因为Document需要内存分配和额外的开销。

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

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