我正在尝试在json文件中搜索对象的值。
如果我的json文件是这样的:
[
{
"friendName": "Ann",
"birthday": "1990-04-19",
"favoriteColor": "Purple",
},
{
"friendName": "Max",
"birthday": "1993-10-07",
"favoriteColor": "Purple",
},
{
"friendName": "Bob",
"birthday": "1992-02-20",
"favoriteColor": "Red",
}
]
我怎么能做(伪)中的事情:
if (object value is "Purple") {
print object value of friendName;
}
这样最终结果就是
Ann
Max
我正在使用json解析器Json for Modern C ++(https://github.com/nlohmann/json)。我是C ++的新手,所以我很难理解README。我正在使用Xcode(版本6.4)
我尝试过使用它:
// find an entry
if (o.find("foo") != o.end()) {
// there is an entry with key "foo"
}
但它似乎不起作用。我知道如果我使用这个代码知道它的位置,如何打印对象的值:
std::cout << obj[0]["friendName"];
哪会导致:
Ann
另外,我也在寻找一种方法来读取值的第一部分。例如,如果我想列出生日在1992年或之后的人的姓名,它将打印出来:
Max
Bob
任何指导都将不胜感激!
答案 0 :(得分:1)
通过C ++ 11的神奇之处(以及设计精良的库),答案几乎与您的伪代码相同:
for (const auto& obj : my_json) {
if (obj["favoriteColor"] == "Purple") {
std::cout << obj["friendName"] << std::endl;
}
}
打印
"Ann"
"Max"