在我的项目中,我使用RapidJSON解析JSON文件。
在应用程序启动时,我需要加载许多JSON文件,但是我只需要一些JSON内容。
但是另一方面,JSON内容具有某些关系,即我可以折叠服务器JSON节点。
// file1.txt
{
"car" : {
"type":"Car",
"wheel":{"ref_type":"Wheel"}
// other properties ...
}
}
// file2.txt
{
"Wheel" : {
"type":"Wheel",
"radius":1.0,
// other properties ...
}
}
问题来了,我该如何存储RapidJSON :: Document :: AllocatorType对象?
// Part 1
rapidjson::Document doc1;
doc1.parse("file1.txt");
rapidjson::Document doc2;
doc2.parse("file2.txt");
// Part 2
// collapse json content
doc1["wheel"].RemoveAllMemebers();
for(auto& it : doc2.getObject()) {
doc1["wheel"].AddMember(it.name, it.value, doc1.getAllocator());
}
如果Part 1
和Part 2
之间有很长的距离,并且仅doc1
的一部分存储为rapidjson::Value
对象。当Allocator
被销毁时,doc1
的{{1}}将丢失。
如何使用
这样的代码doc1
还是有人将rapidjson封装在他们的项目中,您如何避免该问题?