我正在使用nlohmann的json库在c++中处理json对象。最终,我想从文件中读取一个json对象,例如这样的简单对象。

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

我不太确定该如何处理。在https://github.com/nlohmann中,给出了几种从字符串文字反序列化的方法,但是将其扩展为读取文件似乎并不简单。有人对此有经验吗?

最佳答案

JSON for Modern C++ version 3更新2017-07-03
从3.0版开始,不建议使用json::json(std::ifstream&)。应该使用 json::parse() 代替:

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

std::string str(R"({"json": "beta"})");
json js = json::parse(str);
有关如何使用nlohmann的json库的更多基本信息,请参见nlohmann FAQ

JSON for Modern C++版本2的更新
从2.0版开始, json::operator>>() id deprecated 。应该使用json::json()代替:
std::ifstream ifs("{\"json\": true}");
json j(ifs);

JSON for Modern C++版本1的原始答案
使用json::operator>>(std::istream&):
json j;
std::stringstream ifs("{\"json\": true}");
ifs >> j;

10-07 19:30
查看更多