我必须使用RapidJson将JSON数据修改为其他模式。我可以修改Value对象的名称和值,但找不到正确的示例,因此可以通过重新排列节点来修改JSON。
我尝试过通过创建一个新文档并添加从另一个文档中获取的值,但是它不起作用的方式。
rapidjson::Document doc1, doc2;
rapidjson::Document::AllocatorType& alloc = doc1.GetAllocator();
doc1.Parse(str); // str contains the JSON data
Value statusObj(doc1["status"], alloc);
Value resultsObj(doc1["area_data"]["update_results"], alloc);
doc2.SetObject();
doc2.AddMember("status", statusObj, alloc);
doc2.AddMember("results", resultsObj, alloc);
//doc1 - This is the inout JSON
{
"status": {},
"area_data":
{
""
"update_results":[]
}
}
//doc2 - This is what am trying to create
{
"status": {},
"results":[] //update_results from doc 1
}
答案 0 :(得分:0)
找到了一种方法。可行!
rapidjson::Document doc, newDoc;
rapidjson::Document::AllocatorType& alloc = doc.GetAllocator();
doc.Parse(str); // str contains the JSON data
Value& results = doc["area_data"]["update_results"];
Value newResults(kArrayType);
newResults.CopyFrom(results, alloc);
doc.AddMember("results", newResults, alloc);
doc.RemoveMember("area_data");