Как вы получаете объект JSON из строки в nlohmann json?

У меня есть строка, которую я хотел бы разобрать в JSON, но _json кажется, не работает каждый раз.

#include <nlohmann/json.hpp>
#include <iostream>

using nlohmann::json;

int main()
{
// Works as expected
json first = "[\"nlohmann\", \"json\"]"_json;
// Doesn't work
std::string s = "[\"nlohmann\", \"json\"]"_json;
json second = s;
}

Первая часть работает, вторая бросает terminate called after throwing an instance of 'nlohmann::detail::type_error'
what(): [json.exception.type_error.302] type must be string, but is array
,

1

Решение

Добавление _json строковому литералу указывает компилятору интерпретировать его как литерал JSON.

Очевидно, что объект JSON может равняться значению JSON, но строка не может.

В этом случае вы должны удалить _json от буквального, но это делает second строковое значение, скрывающееся внутри объекта JSON.

Итак, вы также используете json::parse, как это:

std::string s = "[\"nlohmann\", \"json\"]";
json second = json::parse(s);

Как создать объект JSON из строки.

0

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

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

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