我正在使用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;