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