2

我正在使用现代 C++ 的 json 解析器 Json ( 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。

4

1 回答 1

7

看源代码:

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);
于 2016-06-27T23:08:23.530 回答