在键值上过滤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; 

那将返回匹配的子集。在这种情况下无需做迭代器。