"vlan": [ {"0":{"key":"network"}, "1":{"key":"interface"}, "5":{"like":"eth0"}}, {"0":{"key":"network"}, "1":{"key":"bond"}}, {"1":{"key":"vlan"}, "2":{"key":"add"}}, {"1":{"key":"vlan"}, "2":{"key":"delete"}}, {"1":{"key":"vlan"}, "2":{"key":"clean"}} ]在未知key和value如何获取每一个key和value
时间: 2023-07-24 18:13:59 浏览: 58
如果您不知道 "vlan" 数组中的键和值的结构,可以使用迭代器来遍历它。以下是一个示例代码:
```cpp
#include <iostream>
#include <nlohmann/json.hpp>
using json = nlohmann::json;
void traverseJsonObject(const json& object) {
for (const auto& [key, value] : object.items()) {
if (value.is_object()) {
traverseJsonObject(value);
} else {
std::cout << "Key: " << key << ", Value: " << value << std::endl;
}
}
}
int main() {
std::string jsonString = R"(
{
"vlan": [
{"0":{"key":"network"}, "1":{"key":"interface"}, "5":{"like":"eth0"}},
{"0":{"key":"network"}, "1":{"key":"bond"}},
{"1":{"key":"vlan"}, "2":{"key":"add"}},
{"1":{"key":"vlan"}, "2":{"key":"delete"}},
{"1":{"key":"vlan"}, "2":{"key":"clean"}}
]
}
)";
json data = json::parse(jsonString);
if (data.contains("vlan") && data["vlan"].is_array()) {
for (const auto& item : data["vlan"]) {
if (item.is_object()) {
traverseJsonObject(item);
}
}
}
return 0;
}
```
在上面的代码中,我们定义了一个名为 `traverseJsonObject` 的递归函数,用于遍历 JSON 对象。函数接受一个 `json` 对象作为参数,并使用迭代器遍历对象中的每个键值对。如果值是一个对象,我们递归调用 `traverseJsonObject` 函数来遍历嵌套对象。如果值不是对象,则打印出键和对应的值。
在 `main` 函数中,我们首先解析 JSON 字符串并存储为 `json` 对象。然后,我们检查 `data` 是否包含 "vlan" 键,并且该键对应的值是否为数组类型。如果满足条件,我们使用一个循环来遍历 "vlan" 数组中的每个元素,并调用 `traverseJsonObject` 函数来遍历每个元素。
希望这能帮助到您。如果还有其他问题,请随时提问。
阅读全文