我需要创建我的.json数组,如下所示:
{
"airports": [{
"address": "Horley, Gatwick RH6 0NP, UK",
"city": "London",
"shortVersion": "LGW"
},
{
"address": "Marupe, LV-1053",
"city": "Riga",
"shortVersion": "RIX"
}
]
}但我现在看起来是这样的:
{
"airports": {
"(LGW)": {
"address": "Horley, Gatwick RH6 0NP, UK",
"city": "London",
"shortVersion": "(LGW)"
},
"(RIX)": {
"address": "Marupe, LV-1053",
"city": "Riga",
"shortVersion": "(RIX)"
}
}
}我现在用于用户输入的代码如下:
airports["airports"][inputShortVersion]["shortVersion"] = inputShortVersion;
airports["airports"][inputShortVersion]["city"] = inputCity;
airports["airports"][inputShortVersion]["address"] = inputAddress;我已经搜索了整整一天了,但是我最接近的是它创建了上面的数组,但是在输入之后,它覆盖了最后的机场数据。
我在使用nlohmann json图书馆。
发布于 2019-02-27 11:32:42
您的期望输出中有一个序列容器,但是代码中有关联容器。
试着做些像
json inputAirport;
inputAirport["shortVersion"] = inputShortVersion;
inputAirport["city"] = inputCity;
inputAirport["address"] = inputAddress;
airports["airports"].push_back(inputAirport);发布于 2019-02-27 11:35:48
显然,您正在创建一个json对象,而不是一个json数组。要获得数组,可以按照以下方式进行尝试:
airports["airports"] = nlohmann::json::array()
new_airport = nlohmann::json::object()
new_airport["shortVersion"] = inputShortVersion;
new_airport["city"] = inputCity;
new_airport["address"] = inputAddress;
airports["airports"].emplace_back(new_airport);可以以可读性为代价,用带括号的抑制器列表将其写得更短:
airports["airports"] = nlohmann::json::array()
airports["airports"].emplace_back(
{
{"shortVersion", inputShortVersion},
{"city", inputCity},
{"address", inputAddress}
});https://stackoverflow.com/questions/54904361
复制相似问题