В файле json, импортированном в мою программу на c ++, есть такая структура:
{
"a":"1",
"ec":[
{
"a":"0x00",
"s":[
{"a":"0xA0"},
{"a":"0xA1"},
],
"b":"v1"
},
{
"a":"0x01",
"s":[
{"a":"0xB0"},
{"a":"0xB1"},
],
"b":"v2"
}
]
}
Я хочу перебрать массив "ec"
и получить значения всех "a"
и для каждого "a"
то же самое для его s
массива
vector<string> ec_a; // should contain {"0x00","0x01"}
vector<string> a1_s; // should contain {"0xA0", "0xA1"}
vector<string> a2_s; // should contain {"0xB0","0xB1"}
сначала я получаю размер ec
, но из документов Я понял, что для остальных нужно использовать итератор
int n=j["ec"].size() // n = 2
for(auto it=j["ec"].begin();it!=j["ec"].end();++it){
if(it.key() == "a") ec_a.push_back(it.value());
}
но получите это исключение nlohmann::detail::invalid_iterator at memory location
Я предполагаю, что j["ec"].begin()
неверно.
как мне это сделать, спасибо.