JSON Toolkit

JSON vs JSON5 vs JSONC

要点:厳密な上位集合の順序:JSONC はコメントを追加し、JSON5 は単一引用符、引用符なしキー、末尾カンマ、16 進数を追加します。選び方を誤るとエディタではなく API が壊れます。

初級約 4 分で読めます2026-10-30 公開2026-10-30 更新
JSON、JSON5、JSONC の機能比較

要点:データがシステム境界を越えるときは常に標準 JSON を使い、人間が編集するローカル設定にだけ JSONC を使いましょう。単一引用符、末尾カンマ、引用符なしキーが必要なら JSON5 に手を伸ばしますが、まず読み込み側が対応していることを確認してください。

一行で言うと:JSONC は JSON にコメントを足したもの、JSON5 は JSON に JavaScript の習慣を足したものです。

機能マトリクス

機能 JSON JSONC JSON5
二重引用符の文字列 ✅ ✅ ✅
単一引用符の文字列 ❌ ❌ ✅
引用符なしキー ❌ ❌ ✅
// 行コメント ❌ ✅ ✅
/* */ ブロックコメント ❌ ✅ ✅
末尾カンマ ❌ ❌ ✅
16 進数 0xFF ❌ ❌ ✅
Infinity / NaN ❌ ❌ ✅
複数行文字列 ❌ ❌ ✅
標準パーサーで読める ✅ ❌ ❌

JSONC が解決するのはコメントだけです。多くの人は「コメントを許す JSON」が末尾カンマも許すと思い込みますが、tsconfig.json は末尾カンマで依然失敗します。

それぞれの用途

JSON — 交換。API、キュー、データベースの JSON 列、ログ。機械同士のすべて。

JSONC — エディタ設定。VS Code がこれらのファイルを自分でパースするので、JSON.parse がそれらを見ることはありません。RFC はなく、Microsoft 主導の事実上の慣習です。

JSON5 — 人間向けの寛容な上位集合。目標は「JavaScript のオブジェクトリテラルに見える設定」でした。ビルドツールが読み込む .json5 ファイルに最適で、最も広い構文と最も狭いツール対応を持ちます。

選択

状況 選ぶもの
リクエスト / レスポンスボディ JSON。代替なし
MySQL / PostgreSQL の JSON 列 JSON。その関数は他を受け付けない
説明が必要なプロジェクト設定 対応していれば JSONC、なければ YAML
JS 風の緩さが欲しい 読み込み側の対応を確認したうえで JSON5
非エンジニアが編集する YAML。波括弧よりインデント

一つの簡単な罠

JSONC ファイルを厳格な JSON としてパースすると、コメントを指すエラーが生まれます。

SyntaxError: Unexpected token / in JSON at position 42

コメントを削除する前に、そのファイルが JSONC であるべきか確認してください。削除しても二行後に末尾カンマで失敗するかもしれません。

FAQ

JSONC と JSON5 はどう選べばよいですか?

必要なのがコメントだけなら JSONC を使います。JSON に // と /* */ を足すだけで、VS Code の settings.json と tsconfig.json が使っています。単一引用符、引用符なしキー、末尾カンマ、16 進数、複数行文字列も欲しいなら JSON5 を使います。どちらも読み込み側に依存するので、ファイルを読むツールが対応していることを確認してください。

JSONC ファイルを標準 JSON として読めないのはなぜですか?

JSONC は事実上の慣習で、独立した RFC ではないので、標準パーサーはコメントを拒否します。そのようなファイルに JSON.parse を使うと Unexpected token / を投げ、データではなくコメントを指します。エディタか専用パーサーが読む設定だけを JSONC で書くべきです。

JSON5 ファイルを API に送るべきですか?

いいえ。API、データベースの JSON 列、キューは厳格な JSON をパースするので、JSON5 の単一引用符、引用符なしキー、末尾カンマは拒否されます。JSON5 は人間が編集するローカル設定用で、システム境界を越える前に標準 JSON に変換してください。

さらに読む