MochiuWiki : SUSE, EC, PCB
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
検索
個人用ツール
ログイン
Toggle dark mode
名前空間
ページ
議論
表示
閲覧
ソースを閲覧
履歴を表示
C++の応用 - JSONのソースを表示
提供: MochiuWiki : SUSE, EC, PCB
←
C++の応用 - JSON
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループのいずれかに属する利用者のみが実行できます:
管理者
、new-group。
このページのソースの閲覧やコピーができます。
== 概要 == <br><br> == JSON for Modern C++ == ==== JSON for Modern C++の概要 ==== 世の中には無数のJSONライブラリがあり、それぞれに存在理由がある。<br> JSON for Modern C++では、次のような設計目標がある。<br> * 直感的な構文 *: Python等のプログラム言語では、JSONはファーストクラスのデータ型のように見える。 *: C++の演算子の全て使用して、コード内で同じ感覚を実現している。 *: <br> * 統合の簡素化 *: ソースコード全体は、単一のヘッダファイルであるjson.hppファイルで構成されているのみである。 *: ライブラリ、サブプロジェクト、依存関係、複雑なビルドシステムは不要である。 *: JSON for Modern C++は、C++ 11で記述されており、コンパイラフラグやプロジェクト設定を調整する必要は無い。 *: <br> * 高い品質 *: JSON for Modern C++は十分にテストされており、全ての例外的な動作を含むソースコードを100%カバーしている。 *: また、ValgrindとClang Sanitizersでメモリリークが無いことを確認している。 *: さらに、Google OSS-Fuzzは、全てのパーサーに対してファズテストを24時間年中無休で実行し、これまでに数十億のテストを効果的に実行している。 *: 高品質を維持するために、プロジェクトはコアインフラストラクチャイニシアチブ (CII)のベストプラクティスに従っている。 *: <br> * メモリ効率 *: 各JSON オブジェクトには、1つのポインタ (共用体の最大サイズ)と1つの列挙要素 (1バイト)のオーバーヘッドがある。 *: デフォルトの汎化では、次のC++データ型が使用される。 *: 文字列の場合は<code>std::string</code> *: 数値の場合は<code>int64_t、uint64_t、double</code> *: オブジェクトの場合は<code>std::map</code> *: 配列の場合は<code>std::vector</code> *: ブール値の場合は<code>bool</code> *: また、必要に応じて汎用クラスのBasic_jsonをテンプレート化することができる。 *: <br> * 開発効率 *: より高速なJSONライブラリは存在するが、単一ヘッダファイルでJSONサポートを追加することにより、開発を高速化することができる。 *: <code>std::vector</code>クラスや<code>std::map</code>クラスの使用方法を知っていれば、すぐに使用することができる。 <br> <u>JSON for Modern C++は、MITライセンスである。</u><br> <br> ==== JSON for Modern C++のインストール ==== [https://github.com/nlohmann/json JSON for Modern C++のGithub]にアクセスして、ソースコードをダウンロードする。<br> ダウンロードするファイルは、Source code (tar.gz)と記載されているリンクである。<br> <br> ダウンロードしたファイルを解凍する。<br> tar xf json-<バージョン>.tar.xz cd json-<バージョン> <br> JSON for Modern C++をビルドおよびインストールする。<br> mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=<JSON for Modern C++のインストールディレクトリ> .. make -j $(nproc) make install <br> ==== 使用方法 ==== <syntaxhighlight lang="c++"> #include <iostream> #include <fstream> #include "nlohmann/json.hpp" int main() { // JSONファイルの内容 json m_json = { {"FirstName", "Jung kook"}, {"LastName", "Park"}, {"Country", "Korea"}, {"Age", 25}, {"Height" 180.5f} }; // JSONファイルの名前 string filename = "JSON-Sample"; string Extension = ".json"; filename += Extension; // JSONファイルへ書き込み ofstream writing_file; writing_file.open(filename, ios::out); // JSONファイルの作成またはオープン writing_file << m_json.dump() << endl; // JSON型のオブジェクトを書き込むには、シリアライズを行う必要がある writing_file.close(); // JSONファイルを閉じる // JSONファイルの読み込み string filename = "JSON-Sample.json"; ifstream ifs(filename.c_str()); if (ifs.good()) { json m_json; ifs >> m_json // 読み込んだデータを各変数へ代入 string firstname = m_json["FirstName"]; string lastname = m_json["LastName"]; int age = m_json["Age"]; double height = m_json["Height"]; // 各データの表示 cout << "firstname:" << firstname << endl; cout << "lastname:" << lastname << endl; cout << "age:" << age << endl; cout << "height:" << height << endl; } else { // JSONファイルの読み込みに失敗した場合 cout << "ファイルの読み込みに失敗しました" << endl; } return 0; } </syntaxhighlight> <br><br> __FORCETOC__ [[カテゴリ:C++]]
C++の応用 - JSON
に戻る。
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報
We ask for
Donations
Collapse