使用rapidjson删除JSON中的嵌套对象

时间:2015-10-07 10:20:51

标签: c++ json rapidjson

我试图删除嵌套在JSON文件中的对象的对象。但是,我无法在互联网或官方的rapidjson页面上找到任何示例。我的代码是用C ++编写的。

我尝试过使用以下代码:

const Value& rootObject= document["root"];

const Value& settingsObject = extensionsObject;

settingsObject.RemoveMember();

但我不确定要传递什么参数或如何初始化MemberIterator以获取精确元素(因为我已经知道要删除的对象的名称)。

以下是JSON结构的示例:

{
  "root": {
    "settings": {
      "item1": {
        "someInfo": 123
      },
      "item2": {
        "someInfo": "string"
      }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

请查看我的代码。

Value Child_Obj(kObjectType); // creat object to but it inside another object
Child_Obj.SetObject(); // set it

Child_Obj.AddMember("Child Number", Value(15), Document->GetAllocator()); // add to child key and its value

Value Parent_Obj(kObjectType); // creat parent object that will have inside him the child object
Parent_Obj.SetObject(); // set it

Parent_Obj.AddMember("Parent Number", Value(10), Document->GetAllocator()); // add to parent key and its value
Parent_Obj.AddMember("Child", Child_Obj, Document->GetAllocator()); // add child object to parent object , "Child" as key and Child_Obj as value

// now the file looks like this :
/*
{
  "Parent":
  {
    "Parent Number":10, 
    "Child": 
    {
      "Child Number":15
    }
  }
}
*/

// let delete this child
Parent_Obj.RemoveMember("Child"); // here you will give it the key for the object you need to delete

// now its look like this :
/*
{
  "Parent":
  {
    "Parent Number":10,
  }
}
*/

// and for fun , if you want to iterate through object , you can do this :
Value::MemberIterator  it = Parent_Obj.MemberBegin();
for (; it != Parent_Obj.MemberEnd(); ++it)
{
  std::string str = it->name.GetString(); // this will give you the key for current child
}