继续我之前的问题here,现在我想将下面json中的键和值插入std::vector<std::pair<std::string, std::vector<uint64_t>>> vec;
这里的键是这样的字符串:12CUDzb3oe8RBQ4tYGqsuPsCbsVE4KWfktXRihXf8Ggq
、12ashmTiFStQ8RGUpi1BTCinJakVyDKWjRL6SWhnbxbT
与之对应的值列表如下:[20964,347474, 34747]
、[1992,1993,109096]
这是来自查询的响应json。
j = {
"12CUDzb3oe8RBQ4tYGqsuPsCbsVE4KWfktXRihXf8Ggq": [
20964,
347474,
347475
],
"12ashmTiFStQ8RGUpi1BTCinJakVyDKWjRL6SWhnbxbT": [
1992,
1993,
109096
]
}
首先,我试着只插入第一个元素的键和值。它工作正常。
std::vector<std::pair<std::string, std::vector<uint64_t>>> vec;
auto key = j.begin().key();
auto value = j.begin().value();
vec.push_back(std::make_pair(key, value));
现在我尝试用这种方法将所有键值插入到vector中
std::vector<std::pair<std::string, std::vector<uint64_t>>> vec;
int i = 0;
while ((j.begin() + i) != j.end()) {
auto key = (j.begin() + i).key();
auto value = (j.begin() + i).value();
vec.push_back(std::make_pair(key, value));
i++;
}
我收到错误:
[json.exception.invalid_iterator.209]
cannot use offsets with object iterators
有人能请问做这件事的正确方法是什么?
1条答案
按热度按时间l7wslrjt1#
我认为你把这个问题复杂化了。你可以用
for
循环遍历json
对象,就像遍历其他容器一样:如果你不关心条目的顺序(JSON键是无序的,nlohmann默认情况下不保持顺序),那么你可以在一个行程序中完成: