【问题标题】:How to search for the value of an object in a json file?如何在 json 文件中搜索对象的值?
【发布时间】:2016-01-06 20:27:58
【问题描述】:

我正在尝试在我的 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++ (https://github.com/nlohmann/json) 的 json 解析器 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

任何指导将不胜感激!

【问题讨论】:

    标签: c++ json parsing search


    【解决方案1】:

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

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

    打印

    "Ann"
    "Max"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-24
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2022-12-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多