C++: чтение объекта json из файла с помощью nlohmann json

Я использую библиотеку json nlohmann для работы с объектами json на c++. В конечном счете, я хотел бы прочитать объект json из файла, например, такой простой объект.

{
"happy": true,
"pi": 3.141
}

Я не совсем уверен, как подойти к этому. At https://github.com/nlohmann несколько способов десериализации из строкового литерала, однако не кажется тривиальным расширять это для чтения в файле. У кого-нибудь есть опыт в этом?

2 ответов


обновление 2017-07-03

С версия 3.0, json::json(std::ifstream&) - Это исключено. Следует использовать, как указал Маркус:--10-->

std::ifstream ifs("test.json");
json j = json::parse(ifs);

обновление

С версия 2.0, можно написать:

std::ifstream ifs("test.json");
json j(ifs);

оригинальный ответ

использовать json::operator>>(std::istream&):

json j;
std::ifstream ifs("test.json");
ifs >> j;

конструктор json j(ifs) является устаревшим и будет удален в версии 3.0.0. Начиная с версии 2.0.3 вы должны написать:

std::ifstream ifs("test.json");
json j = json::parse(ifs);