2015-10-09 36 views
0

我想在我的json文件中搜索一个对象的值。如何在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++的新手,所以我很难理解自述文件。我使用的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 

任何指导,将不胜感激!

回答

1

通过对C++ 11(和一个非常精心设计库)的神奇,答案几乎是相同的伪代码:

for (const auto& obj : my_json) { 
    if (obj["favoriteColor"] == "Purple") { 
     std::cout << obj["friendName"] << std::endl; 
    } 
} 

打印

​​