Я использую анализатор JSON JSON для современного C ++ (https://github.com/nlohmann/json). Я знаю, что могу получить значение JSON с помощью JSON_Pointer:
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» не определен. Помимо этой проблемы, это отличная библиотека, которая делает все остальное, что мне нужно. ТИА.
Посмотрите на исходный код:
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);
Других решений пока нет …