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 个对象,而不是一个对象,所以您应该得到索引为 i
的 array2
,而不是 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
我需要使用 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 个对象,而不是一个对象,所以您应该得到索引为 i
的 array2
,而不是 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