JSON for Modern C++ を使ってみたメモ
メモ書き
JSON for Modern C++ とは?
以下、参照。
使い方
Github のページの json/src/
に json.hpp
というファイルがあるので、これを include
する。
#include "json.hpp" using json = nlohmann::json;
この json
クラスを使って、JSON ファイルを読んだり書いたりする。
以下のような JSON ファイルを使って、例を示していく。
ファイル名は、test.json
として進めていく。
{ "pi": 3.141, "happy": true, "name": "Niels", "nothing": null, "answer": { "everything": 42 }, "list": [1, 0, 2], "object": { "currency": "USD", "value": 42.99 } }
JSON ファイルの読み込み
JSON ファイルを読む必要があるので、まずはファイルを読む。
std::ifstream reading("test.json", std::ios::in);
ファイルの入出力は以下を参照。
ファイルを読んだら以下のようにして取り出す。
json j; reading >> j;
これだけで、ファイルの中身がすべて json j
に入っている。
試しに以下のように出力すると
reading >> j; std::cout << j << std::endl;
以下のように出力される。
{"answer":{"everything":42},"happy":true,"list":[1,0,2],"name":"Niels","nothing":null,"object":{"currency":"USD","value":42.99},"pi":3.141}
改行はしてくれないっぽい。
このデータだけ取り出したいってときは、以下のようにする。
std::cout << j["pi"] << std::endl; // 出力結果は、3.141
begin(), end() を使って取り出すことができる。
std::for_each(j.begin(), j.end(), [](auto it) {
std::cout << it << std::endl;
});
結果は、以下のようなる。
{"everything":42} true [1,0,2] "Niels" null {"currency":"USD","value":42.99} 3.141
begin, end を使うとアルファベット順になる。
C++17 だと以下のように書ける。
for (auto& elem : j) { std::cout << elem << std::endl; }
JSON ファイルへ書き込み
未調査…
おわり
とても使いやすい。まだまだ調べ切れていないので、分かり次第更新していく予定。