我正在使用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。
答案 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);