Json 为 nlohmann 创建数据

Json data creation for nlohmann

我有一些数据,例如

{
"GLOBAL DATA":
    {
    "FIRST": [
                {"BEGIN": "0", "END" : "100"}
             ],
    "SECOND":"SomeData",
    "THIRD":"SomeMoreData"
    }
}

我想向 FIRST 数组添加更多数据。 我尝试按如下方式创建插入数据

json v2 = {"BEGIN": "200","END" : "300"};

但这给出了错误

example1.cpp:34:23: error: expected '}' before ':' token json v2 = {"BEGIN": "200","END" : "300"};

我的 v2 数据有什么问题?

您可以将 JSON 数据包装在原始字符串文字中并使用 _json user-defined literal 对其进行解析:

json v2 = R"({"BEGIN": "200", "END": "300"})"_json;

或者您可以直接创建(无需解析),但使用有效的 C++ 语法:

json v2 = {{"BEGIN", "200"}, {"END", "300"}};

分析你想做什么:

这里是:

{"BEGIN":"0","END":"100","MIDDLE":50}

是层次结构中索引 0 处的对象:

globalData.first

所以你可以获取数组中索引为 0 的元素并添加一个新的 key:value

std::string st = "{\"GLOBAL DATA\":{\"FIRST\": [{\"BEGIN\": \"0\", \"END\" : \"100\"}],\"SECOND\":\"SomeData\",\"THIRD\":\"SomeMoreData\"}}";
nlohmann::json second = nlohmann::json::parse(st);
second["GLOBAL DATA"]["FIRST"].at(0).push_back({"MIDDLE", 50});
std::cout << second.dump().c_str();

输出:

{"GLOBAL DATA":{"FIRST": [{"BEGIN":"0","END":"100","MIDDLE":50}],"SECOND":"SomeData","THIRD":"SomeMoreData"}}