C ++ nlohmann / json, как использовать предоставляемые json_pointers среды выполнения для чтения значений json

Я использую анализатор 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» не определен. Помимо этой проблемы, это отличная библиотека, которая делает все остальное, что мне нужно. ТИА.

1

Решение

Посмотрите на исходный код:

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);
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]