需求描述
在C++中使用nlohmann json时,如果需要删掉array类型中的元素,不能使用basic_json::object提供的erase(iterator)重载,如果需要删除array中的元素需要使用erase(idx)重载进行删除。
实现方法
以下函数,传入的第一个参数是JSON的array对象,第二个参数是要删除的元素的值,该函数实现删除指定字符串元素的第一个匹配的元素。
int RemoveJsonArrayFirstElement(JSON& js, string elemValue)
{
int idx = 0;
for (auto iter = js.begin(); iter != js.end(); ++iter) {
if (*iter == elemValue) {
js.erase(idx);
return idx;
}
idx++;
}
return -1;
}
如果匹配成功,这调用erase(idx),函数进行删除,然后返回。
评论区