c++ - 如何在json文件中搜索对象的值?

标签 c++ json parsing search

我正在尝试在我的 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

我正在使用现代 C++ 的 json 解析器 Json ( 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

如有任何指导,我们将不胜感激!

最佳答案

通过 C++11 的魔力(以及一个设计良好的库),答案几乎与您的伪代码相同:

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

打印

"Ann"
"Max"

关于c++ - 如何在json文件中搜索对象的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028955/

相关文章:

json - 使用 Swift 4 解析 JSON 数据数组

javascript - 在工厂中使用 ngResource 时无法选择 JSON 索引

php - 在php中解析日期

json - 使用 Spark 2 从 json 解析纪元毫秒

c++ - 多态数据存储的替代方案

c++ - Visual Studio 不为 KinectBridgeWithOpenCVBasics D2D C++ 示例使用额外的包含目录,但为其他解决方案使用。

json - 基于 JSON 的 REST API 上的 PUT 最常见的预期行为是什么?文档替换或部分更新)?

c++ - C/C++ LIBTIFF : Need to read pixel location of white and black pixels from BW TIFF files

c++ - 在递归中使用--a vs a-1

javascript - JavaScript 有类似 simple_html_dom.php 的东西吗?