如何避免存储RapidJSON :: Document :: AllocatorType对象?

时间:2019-05-31 16:10:36

标签: rapidjson

在我的项目中,我使用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 1Part 2之间有很长的距离,并且仅doc1的一部分存储为rapidjson::Value对象。当Allocator被销毁时,doc1的{​​{1}}将丢失。

如何使用

这样的代码
doc1

还是有人将rapidjson封装在他们的项目中,您如何避免该问题?

0 个答案:

没有答案