JSON Toolkit

JSON にコメントは書けるか

要点:RFC 8259 にコメント構文はなく、`//` やブロックコメントは `JSON.parse` を失敗させます。JSON5 や JSONC、`_comment` フィールド、Schema の description、YAML を使いましょう。

初級約 3 分で読めます2026-10-30 公開2026-10-30 更新
JSON にコメントがない理由と代わりに何を使うか

要点:標準 JSON には決してコメントを入れず、人間だけが編集するローカル設定には JSONC や JSON5 を使い、ファイルがシステムをまたぐなら説明を JSON Schema の description に移し、注釈が増えたら YAML や TOML に切り替えましょう。

書けません。

標準に準拠したパーサーはこれを拒否します。

{
  "port": 8080 // ローカル開発専用
}

Chrome は SyntaxError: Unexpected token } を報告します。パーサーは / にぶつかり、それはどの JSON 値も開始できないので、止まったのです。

なぜ仕様は意図的にコメントを除外したのか

RFC 8259 は六つの値を定義します。オブジェクト、配列、数値、文字列、true/false、null。コメントの生成規則はありません。

コメントは早くに提案され、具体的な理由で拒否されました。コメントが合法になると、誰かがそれを指令の運搬に使うのです。条件付きインクルード、テンプレート変数。そしてすべてのパーサーが独自の方言を育てます。相互運用性は最初のホップで壊れます。JSON は意図的にデータ専用で、中に実行可能なものを何も持たないのです。

注記を残す四つの方法

1. 上位集合を使う。 JSON5 と JSONC はどちらのコメントスタイルも受け入れます。VS Code の settings.json と tsconfig.json は JSONC です。 コストは現実です。JSON.parse は依然として拒否し、API、ログパイプライン、メッセージキューは通常標準 JSON しか受け付けません。コメントは静かに落とされるか、下流のどこかで例外を投げます。

2. 注記をデータに入れる。

{
  "_comment": "ポートは運用が割り当て。変更しないこと",
  "port": 8080
}

どこでも動きますが、モデルを汚します。すべての消費者がどのキーを無視するかを知らなければならず、型定義に本当のデータではないフィールドが増えます。

3. Schema の description を使う。 description は人間とツールのためにあります。バリデータはそれを表面化し、エディタはホバーで表示し、ペイロードには決して入りません。互換性を壊さず長期的な保守に耐える唯一の選択肢です。

4. ファイル形式を変える。 ファイルが手で編集されるために存在するなら、YAML や TOML はコメントをネイティブにサポートします。ここで JSON と戦うのは無駄な労力です。

選択

状況 答え
別システムへ、API やキュー経由で送る コメントなし。Schema か外部ドキュメントで文書化
人間とエディタだけが読む設定 JSONC。拡張子は .jsonc
普遍的なツールとインライン説明が必要 標準 JSON + Schema の description
注釈の多い長い設定 YAML に切り替え

FAQ

_comment フィールドがモデルを汚すのはなぜですか?

データの一部になるからです。すべての消費者がどのキーを無視するかを知らなければならず、型定義に本当の業務データではないフィールドが増えます。

説明は JSON Schema の description に置くべきですか?

はい。description はペイロードの外に留まり、バリデータが表面化し、エディタがホバーで表示するので、互換性を壊さず長期的な保守に耐える唯一の選択肢です。

JSONC や JSON5 は JSON.parse でパースできますか?

いいえ。JSON.parse は依然コメントを拒否し、API、ログパイプライン、メッセージキューは通常標準 JSON しか受け付けないので、コメントは落とされるか下流で例外を投げます。

ツール

さらに読む