OSS探訪GitHubでログイン

C++の値としてJSONを組み立て、解析・変換・保存できる

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
50,720
主要言語
C++
ライセンス
MIT
リポジトリ最終更新
2026/10/04
ページ内ナビ

概要

JSON for Modern C++は、JSONをC++のオブジェクトや配列のように扱える単一ヘッダーライブラリです。文字列・ストリームの解析、値の更新、整形出力、バイナリ形式への変換までを、STLに近いAPIでまとめて扱えます。

特徴と向いている用途

実機検証あり(下記の環境・範囲に限定) · 内容確認日:

主な特徴

C++のコンテナに近い操作でJSONを扱う

オブジェクトや配列を初期化リストで組み立て、operator[]、at、findなどで値へアクセスできます。parseで文字列やストリームを読み、dumpや出力ストリームでJSONへ戻せるため、設定ファイルやAPI応答の入出力を一つの型で記述できます。

出典:[1]

単一ヘッダーから標準形式とバイナリ形式へ対応する

json.hppをインクルードするだけで導入でき、JSON Pointer、JSON Patch、Merge Patchに加え、CBOR、MessagePack、BSON、UBJSONなどとの相互変換も備えます。CMakeのnlohmann_json::nlohmann_jsonターゲットとして依存関係へ組み込む方法も案内されています。

出典:[1][2]

向いている用途

既存のC++アプリへ軽量にJSON処理を足す

別プロセスや大きなランタイムを増やさず、設定、メッセージ、テスト用データをC++コード内で直感的に扱いたい場面に向きます。STLコンテナに慣れたチームなら、型変換や反復処理を既存の書き方へ寄せやすい構成です。

出典:[1]

導入前の確認

速度・メモリ要件と入力例外を設計に織り込む

READMEは開発しやすさを優先し、最速・最小メモリの実装を目標にしていないと明記しています。信頼できない入力ではparse_errorなどの例外処理、入力サイズの上限、UTF-8以外をdumpするときの扱いをアプリ側で決めてください。

出典:[1]

3.12.0 / C++ compiler with C++11 support

Pinned release header compiled; parsing, mutation, serialization, reparsing, and assertions executed locally.

参考にした公式資料

  1. [1]JSON for Modern C++ 3.12.0 README(2026-10-04)
  2. [2]JSON for Modern C++ 3.12.0 release(2026-10-04)
  3. [3]JSON for Modern C++ 3.12.0 MIT license(2026-10-04)
編集部からの補足

APIの読みやすさと導入の軽さを両立し、設定読み込みからAPI応答の生成まで幅広く使える点に注目しました。性能やメモリが最優先の処理では、実データで他のJSON実装とも比較してください。

3ステップで試す

  1. 1

    3.12.0の単一ヘッダーを取得する

    curlとC++11対応コンパイラーを用意し、公開リリースのjson.hppを作業ディレクトリへ保存します。

    mkdir -p json-3.12.0-demo && cd json-3.12.0-demo && curl -fL -o json.hpp https://github.com/nlohmann/json/releases/download/v3.12.0/json.hpp
  2. 2

    解析とシリアライズの例を書く

    JSON文字列を解析し、値を追加して再び解析する小さなC++プログラムを生成します。

    printf '%s\n' '#include "json.hpp"' '#include <cassert>' '#include <iostream>' 'int main() {' ' auto value = nlohmann::json::parse(R"({"project":"OSS Tanbou","stars":3})");' ' value["ready"] = true;' ' const auto encoded = value.dump();' ' const auto decoded = nlohmann::json::parse(encoded);' ' assert(decoded["project"] == "OSS Tanbou" && decoded["ready"] == true);' ' std::cout << encoded << "\n";' '}' > demo.cpp
  3. 3

    コンパイルして往復変換を確かめる

    C++11でビルドし、解析後の値をassertで検証してシリアライズ結果を表示します。

    c++ -std=c++11 -I. demo.cpp -o demo && ./demo
公式READMEで確認

成長

成長の推移 · 直近30日

50,720 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
178
Open PR
52

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

カテゴリ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • json
  • json-pointer
  • json-patch
  • cbor
  • msgpack
  • header-only
  • stl-containers
  • json-serialization
  • json-parser
  • rfc-6901
  • rfc-6902
  • rfc-7159
Stars
50,720
Forks
7,510
Watchers
740
Open Issues
30
Contributors
386
所有者種別
User
主要言語
C++
ライセンス
MIT
リポジトリ最終更新
2026/10/04

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?