在键值上过滤Json :: Value对象
问题描述:
我有一个json对象:[{a:"b"},{a:"c"},{a:"c"},{a:"d"},{a:"e"}]
它存储在Json::Value
对象中。在键值上过滤Json :: Value对象
我似乎遇到一些麻烦与JSON对象向下过滤说:只有“A” =“C”
我试图做到以下几点:
Json::Value data (*result.GetValue());
std::string filterValue = message->GetData()["Filter"];
std::string filterKey("a");
//above was just a quick variable definition for my example.
for (auto row = data.begin(); row != data.end(); ++row)
{
if (*row[filterKey].asString().compare(filterValue) != 0)
{
//Remove this row from the JSON object.
}
}
通常我我是一个JavaScript开发人员,但我想在将C++ 11的结果发送给客户端之前进行筛选。在Javascript中它就像这样简单:[].filter(function(ele){ if (ele["a"] == "c") return true; return false; });
但这在这里没有帮助。
在Json :: Value api中,我没有看到任何类型的过滤函数。
编辑:另一个问题是我不知道如何一切都将在循环作用,如果我删除的项目......类似:row->clear()
或类似
答
只是做:
Json::Value newOut;
for (Json::Value row : data)
{
if (row["a"].asString().compare("b") == 0)
{
newOut.append(row);
}
}
return newOut;
那将返回匹配的子集。在这种情况下无需做迭代器。