C ++ nlohmann / json如何使用运行时提供的json_pointers来读取json值

时间:2016-06-27 23:04:52

标签: c++ json nlohmann-json

我正在使用json解析器Json for Modern C ++(https://github.com/nlohmann/json)。我知道我可以使用JSON_Pointer获取JSON值的值:

auto v1 = j["/a/b/c"_json_pointer];

但是如果在运行时定义JSON指针(传入我的函数),我将如何获取值?

std:string s1 = "/a/b/c";
auto v1 = j[s1]; // doesn't work

您不能将“json_pointer”附加到std :: string赋值或s1变量。是否有一个将std :: string转换为json_pointer的函数?调用者对json一无所知,也无法访问“json.hpp”头。我也试过了

std::string s1 = "/a/b/c";
json_pointer p1(s1);

但是“json_pointer”类未定义。除了这个问题,这是一个很棒的图书馆,可以完成我需要的一切。 TIA。

1 个答案:

答案 0 :(得分:4)

查看源代码:

inline nlohmann::json::json_pointer operator "" _json_pointer(const char* s, std::size_t)
{
    return nlohmann::json::json_pointer(s);
}

如果json_pointer未定义,那么您没有使用正确的命名空间。尝试

using nlohmann::json::json_pointer;
std::string s1 = "/a/b/c";
json_pointer p1(s1);