web-dev-qa-db-ja.com

C ++:nlohmann jsonを使用してファイルからjsonオブジェクトを読み取る

Nlohmannのjsonライブラリを使用して、c ++でjsonオブジェクトを操作しています。最終的に、ファイルからjsonオブジェクトを読み取りたいと思います。このような単純なオブジェクト。

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

これにどのように取り組むか私にはよくわかりません。 https://github.com/nlohmann では、文字列リテラルから逆シリアル化するいくつかの方法が提供されていますが、これを拡張してファイルを読み取ることは簡単ではないようです。誰もがこれを経験していますか?

17
user3515814

2017-07-03を更新 JSON for Modern C++バージョン3

バージョン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++ version 1の元の回答

json::operator>>(std::istream&)を使用:

_json j;
std::ifstream ifs("{\"json\": true}");
ifs >> j;
_
27
YSC

コンストラクタjson j(ifs)は非推奨であり、バージョン3.0.0で削除されます。バージョン2.0.3以降、次のように記述します。

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