我想使用json11
构建以下json对象{
"arrayOfData": [
8,
11,
2016
],
"objectOfData": [
{"day": "8"},
{"month": "11"},
{"year": "2016"}]
}
我想在json11对象中添加数据数组,嵌套/子对象。
答案 0 :(得分:2)
json11支持嵌套对象和数组的以下语法:
{
{ //notice one more { here
"arrayOfData", Json::array { //notice {
8,
11,
2016
}
}, //close
{ //open
"objectOfData", Json::array {
Json::object { {"day", "8"} }, //notice {{ and }}
Json::object { {"month", "11"} },
Json::object { {"year", "2016"} }
}
} //close
}
嵌入式注释和嵌套结构的细节看起来很笨拙。让我们缩小并查看一般语法 - 更大的图片 - 没有嵌套结构的注释和细节:
auto object = Json::object {
{ key1, value1 },
{ key2, value2 },
{ key3, value3 },
{ key4, Json::array { ... } },
{ key5, Json::object { {...}, {...}, ... } },
{ key6, value6}
};
希望有所帮助。
答案 1 :(得分:-1)
首先,我们将构建一个空的json11对象:
json11::Json::object parent = json11::Json::object{};
然后我们将构建我们想要放在父json上的子/嵌套数组:
std::vector<int> array;
array.push_back(8);
array.push_back(11);
array.push_back(2016);
现在我们将上面的数组添加到json11对象:
parent["arrayOfData"] = array;
现在我们将使用json11对象的向量构建对象:
std::vector<json11::Json::object> object;
object.resize(3);
object[0] = json11::Json::object{};
object[0]["day"] = "8";
object[1] = json11::Json::object{};
object[1]["month"] = "11";
object[2] = json11::Json::object{};
object[2]["year"] = "2016";
将上面的对象添加到json11对象:
parent["objectOfData"] = object;
最后生成json格式的字符串:
json11::Json json = json11::Json{ parent };
std::string jsonString = json.dump();
现在jsonString
应如下所示:
{"arrayOfData": [8, 11, 2016], "objectOfData": [{"day": "8"}, {"month":
"11"}, {"year": "2016"}]}