我正在试图找出克隆rapidjson的最佳方法是什么。我在网上看到了一些很好的想法,这些想法有很大不同。
Milo在他的文档中提供了示例(deep copy milo),这就像rapidjson中tutorial.md中的深层复制示例。但是,这是一个过于简单的,一个值json。对于大型,多类型,json,迭代会很复杂,我没有看到一个很好的例子。
有newDocument copy有一个我喜欢的例子,但有人评论解析很慢,但对于一个大型的快速示例,迭代整个集合也需要很长时间。另外,< 0>或其他语法出错。没有给出类型。
static void copyDocument(rapidjson::Document & newDocument, rapidjson::Document & copiedDocument) {
rapidjson::StringBuffer strbuf;
rapidjson::Writer<rapidjson::StringBuffer> writer(strbuf);
newDocument.Accept(writer);
std::string str = strbuf.GetString();
copiedDocument.Parse<0>(str.c_str());
}
显然有一个DeepCopy patch,但我不确定如何使用它,或者它是否在我的rapidjson版本(1.1.0)中。我还没有运气使用GenericMember。我们正在使用DOM。我不能使用非官方版本的rapidjson,因为许可证会有所不同,它会偏离rapidjson的主流版本。
对于libjson,我们曾经做过浅拷贝,比如&amp; rhs,但我正在寻找建议,如果它在1.1.0中,可能还有一个使用DeepCopy补丁的例子。