C stdioやiostreamsに代わる高速で型安全なC++フォーマットライブラリ。C++20のstd::formatを実装しています。
nlohmann/json
STL風の構文でJSONの解析、構築、操作、シリアライズができる、ヘッダーオンリーのC++11ライブラリ。
- スター
- 50,790
- フォーク
- 7,511
- 未解決の Issue
- 19
- 最終コミット
- 4 時間前
これは何?
JSON for Modern C++は、JSON値をネイティブのデータ型のように扱えるC++ライブラリです。JSON値は単一のクラスbasic_json(nlohmann::jsonとしてエイリアス)で表現され、リテラル、STLコンテナ、ユーザー定義型から構築でき、演算子やおなじみのコンテナメソッドでアクセスできます。
ライブラリ全体が単一のヘッダーファイルとして配布されているため、別途ビルドしたり依存関係を追加したりせずにプロジェクトへ組み込めます。JSON Pointer(RFC 6901)、JSON Patch(RFC 6902)、JSON Merge Patch(RFC 7396)に対応し、差分の生成も可能です。また、BSON、CBOR、MessagePack、UBJSON、BJData、BON8など、複数のバイナリ形式との相互変換にも対応しています。
ユーザー定義型は、to_json関数とfrom_json関数、またはそれらを生成するヘルパーマクロを使ってJSONにマッピングできます。プロジェクトではドキュメントとAPIリファレンスを公開しており、CMakeや一般的なパッケージマネージャーとの連携方法も案内しています。
主な機能
- 01依存関係なしで組み込める、C++11製の単一ヘッダーライブラリ。
- 02STL風の直感的な構文でJSON値にアクセスし、値を代入できます。
- 03文字列、ストリーム、イテレーター範囲からの解析に加え、インデント付きのシリアライズに対応。
- 04JSON Pointer、JSON Patch、JSON Merge Patchに対応し、差分も生成できます。
- 05CBOR、MessagePack、BSON、UBJSONなどのバイナリ形式との相互変換に対応。
- 06カスタムC++型をJSONにマッピングするためのマクロと変換関数を提供。
ユースケース
- C++アプリケーションで設定ファイルやAPIペイロードを読み込む。
- C++のデータ構造からJSONレスポンスやメッセージを構築する。
- ドキュメントのバージョン間のJSON差分を計算し、適用する。
- C++の構造体を、保存や転送用にJSONまたはバイナリ形式へシリアライズする。
クイックスタート
- 1
リポジトリのヘッダーファイル json.hpp を1つプロジェクトに追加するか、パッケージマネージャーからインストールします
- 2
C++コードに #include <nlohmann/json.hpp> を記述し、json 型を使い始めます
使う前に知っておきたいこと
- README には、より高速な JSON ライブラリが存在すると記載されているため、このライブラリは速度よりも使いやすさを優先しています。
トピック
よくある質問
- json とは?
- STL風の構文でJSONの解析、構築、操作、シリアライズができる、ヘッダーオンリーのC++11ライブラリ。 JSON for Modern C++は、JSON値をネイティブのデータ型のように扱えるC++ライブラリです。JSON値は単一のクラスbasic_json(nlohmann::jsonとしてエイリアス)で表現され、リテラル、STLコンテナ、ユーザー定義型から構築でき、演算子やおなじみのコンテナメソッドでアクセスできます。
- json は無料で使えますか?ライセンスは?
- json は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- json は今もメンテナンスされていますか?
- 活発にメンテナンス中。json の最終コミットは 2026年10月21日 です。
- json は何に使えますか?
- C++アプリケーションで設定ファイルやAPIペイロードを読み込む。 C++のデータ構造からJSONレスポンスやメッセージを構築する。 ドキュメントのバージョン間のJSON差分を計算し、適用する。 C++の構造体を、保存や転送用にJSONまたはバイナリ形式へシリアライズする。
- json のインストール方法は?
- リポジトリのヘッダーファイル json.hpp を1つプロジェクトに追加するか、パッケージマネージャーからインストールします C++コードに #include <nlohmann/json.hpp> を記述し、json 型を使い始めます
- json はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/nlohmann/json
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
JSONの作成・編集・比較や、プログラミング言語のクラスからのJSON生成ができるデスクトップ/VS Codeツール。
LLMのプロンプトに構造化データを渡す際のトークン使用量を抑える、コンパクトで読みやすいJSONデータ向けエンコーディング。
完全な検証を行いながら、SIMD命令で毎秒数GBのJSONを解析するC++パーサー。
ソースコードを参照できないオブジェクトも含め、JavaオブジェクトとJSONを相互変換できるJavaライブラリ。
HTTP/WebSocketサービスを構築するための、高速で使いやすいFlask風C++マイクロフレームワーク。ヘッダーオンリーで利用できます。