Jsoncpp嵌套对象数组

Jsoncpp nested arrays of objects

我需要使用 jsoncpp 库在 json 文件中搜索元素。 我不知道如何到达最内部的数组...有什么想法吗?

{
    "key": int,
    "array1": [
        {
            "key": int,
            "array2": [
                {
                    "key": int,
                    "array3": [
                        {
                            "needed_key": int
                        }
                    ]
                }
             ]
          }
     ]
}

到目前为止,我尝试过这样的事情:

    const Json::Value& array1 = root["array1"];
    for (size_t i = 0; i < array1.size(); i++)
    {
        const Json::Value& array2 = array1["array2"];
        for (size_t j = 0; j < array2.size(); j++)
        {
            const Json::Value& array3 = array2["array3"];
            for (size_t k = 0; k < array3.size(); k++)
            {
                std::cout << "Needed Key: " << array3["needed_key"].asInt();
            }
        }
    }

但它抛出:

JSONCPP_NORETURN void throwLogicError(String const& msg) {
  throw LogicError(msg);
}

您无法使用 array1["array2"] 访问 array2,因为 array1 包含一个 array 个对象,而不是一个对象,所以您应该得到索引为 iarray2,而不是 array1[i]["array2"]

以下代码适用于我:

  const Json::Value &array1 = root["array1"];
  for (int i = 0; i < array1.size(); i++) {
    const Json::Value &array2 = array1[i]["array2"];
    for (int j = 0; j < array2.size(); j++) {
      const Json::Value &array3 = array2[j]["array3"];
      for (int k = 0; k < array3.size(); k++) {
        std::cout << "Needed Key: " << array3[k]["needed_key"].asInt();
      }
    }
  }

输出如下:

Needed Key: 4