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"}}
我有一些数据,例如
{
"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"}}