如何删除 nlohmann::json 文件 C++ 中项目内部的项目

How to erase item inside of item in nlohmann::json file C++

我想知道如何删除 nlohmann::json C++ 库中项目中的项目。

Json 示例文件:

{
    "Users":{
        "User1":{
            "Name":"BOB",
            "DeleteMe":"IWantToBeDeleted!"
        }
    }
}

我要删除的是"DeleteMe":"IWantToBeDeleted!"在“用户”和“用户 1”中 我查看了 basic_json::erase 的文档,但我只能看到如何删除 json 文件根目录中的项目,例如示例文件中的“用户”。

任何帮助将不胜感激=D

basic_json::erase 仅从当前引用的 json 节点中删除——因此如果您的 json 对象是外部对象,这就是您只能删除顶级条目的原因.您想要的是一种获取内部节点 User1 并从那里在 DeleteMe 键上调用 erase 的方法。

您应该能够使用 json_pointer 轻松获得对 User1 的引用——这基本上是需要遍历以获得所需节点的节点的字符串路径。拥有节点后,它应该像调用 erase.

一样简单

像这样:

auto json = nlohmann::json{/* some json object */};
auto path = nlohmann::json_pointer<nlohmann::json>{"/Users/User1"};


// Get a reference to the 'user1' json object at the specified path
auto& user1 = json[path];

// Erase from the 'user1' node by key name
user1.erase("DeleteMe");

Live Example