#include <nlohmann/json.hpp>
#include <iostream>
#include <string>
nlohmann::json get_value_by_path(const nlohmann::json& j, const std::string& path) {
std::vector<std::string> keys;
std::size_t start = 0;
std::size_t end = 0;
// 分割路径字符串为键的向量
while ((end = path.find('/', start)) != std::string::npos) {
keys.push_back(path.substr(start, end - start));
start = end + 1;
}
// 处理最后一个键
keys.push_back(path.substr(start));
nlohmann::json temp = j;
for (const auto& key : keys) {
// 检查当前类型是否为对象且包含键
if (!temp.is_object() || !temp.contains(key)) {
return nlohmann::json(); // 返回空 JSON 对象作为默认值
}
temp = temp[key];
}
return temp;
}
int main() {
nlohmann::json j = R"(
{
"backup_id": 1573058608,
"name": "地图 1",
"nested": {
"object": {
"key": "deeper_value",
"key2": 1212,
"key3": "value3",
"key4": "value4"
}
}
}
)"_json;
std::string path = "nested/object/key2"; // 要访问的路径
auto value = get_value_by_path(j, path); // 获取路径对应的值
std::cout << value << std::endl;
return 0;
}
在已知json数据结构的时候,可以直接通过“nested/object/key“获取对应的value值
最新推荐文章于 2024-05-31 14:49:19 发布