Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C++: Reading a json object from file with nlohmann json

I am using the nlohmann's json library to work with json objects in c++. Ultimately, I'd like to read a json object from a file, e.g. a simple object like this.

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

I'm not quite sure how to approach this. At https://github.com/nlohmann several ways are given to deserialise from a string literal, however it doesn't seem trivial to extend this to read in a file. Does anyone have experience with this?

like image 782
user3515814 Avatar asked Nov 10 '15 10:11

user3515814


1 Answers

Update 2017-07-03 for JSON for Modern C++ version 3

Since version 3.0, json::json(std::ifstream&) is deprecated. One should use json::parse() instead:

std::ifstream ifs("test.json"); json jf = json::parse(ifs);  std::string str(R"({"json": "beta"})"); json js = json::parse(str); 

For more basic information on how to use nlohmann's json library, see nlohmann FAQ.


Update for JSON for Modern C++ version 2

Since version 2.0, json::operator>>() id deprecated. One should use json::json() instead:

std::ifstream ifs("{\"json\": true}"); json j(ifs); 

Original answer for JSON for Modern C++ version 1

Use json::operator>>(std::istream&):

json j; std::stringstream ifs("{\"json\": true}"); ifs >> j; 
like image 123
YSC Avatar answered Sep 29 '22 11:09

YSC