てもとツール
ガイド

JSONにコメントは書けない|書けない記法と代わりの残し方

JSONにはコメントを書く記法がなく、「//」や「/* */」を書くとJSONとして読むところでエラーになります。末尾のカンマや単引用符など、JavaScriptでは通るのにJSONでは通らない書き方と、VS Codeの設定ファイルのようにコメントを読めるファイルとの違い、説明を残す代わりの方法をまとめました。

公開読了目安 約5分

この記事の要点

  • JSONの決まり(RFC 8259)には、コメントを書く記法が無い
  • 「//」や「/* */」を書くと、決まりどおりにJSONを読むところでエラーになる
  • VS Codeの設定ファイルのように、コメントを読める特別な形のJSONもある
  • npmが読むpackage.jsonは、コメントを書くとエラーになって読めない
  • 説明を残すなら、説明用の項目を足すか、YAMLで書いてJSONに変換する
目次

JSONには、コメントを書く記法がありません。 「//」や「/* */」で説明を書き足すと、決まりどおりにJSONを読むところでエラーになります。

説明を残したいときは、説明用の項目を足すか、コメントを書ける形式で書いてからJSONに直します。 この記事では、JSONで通らない書き方と、コメントを書けるファイルとの違い、代わりの残し方を順に整理します。

JSONの決まりにはコメントが無い

JSONの書き方は、RFC 8259という文書で決められています。 値として書けるのは、{ } のまとまり、[ ] の並び、文字列、数、true / false / null だけです。

すき間に置いてよいのは、空白・タブ・改行の4種類の文字に限られます。 コメントを書く記法は、この決まりのどこにもありません。

そのため、次のように説明を書き足すと読めなくなります。

{
  // 表示する件数
  "limit": 20
}

JSON整形ツールに貼って整形すると、Chromeでは「構文エラー: 2行目付近で予期しないトークンがあります」と出ます。 2行目の「//」のところで、次に項目の名前が来るはずだと判断されるからです。

JavaScriptでは通るのにJSONでは通らない書き方

JSONは、JavaScriptの書き方をもとに作られています。 見た目が似ているので、JavaScriptで通る書き方をそのまま持ち込みがちです。

次の書き方は、どれもJSONではエラーになります。

  • コメント: // 件数 や /* 最大 */
  • 単引用符: 'limit'(JSONの文字列は " で囲む)
  • 名前を囲まない: limit: 20(名前も "limit" と囲む)
  • 末尾のカンマ: 最後の項目の後ろの ,
  • 決まりに無い値: NaN、undefined、Infinity
  • 数の前の + と 0: +20 や 007

RFC 8259は、007 のように数の頭に余計な0を付けることを認めていません。 数の前に付けてよい符号も、マイナスだけです。

JSON整形ツールは、ブラウザが返すエラーの文から行の番号を読み取って表示します。 NaN や +20 のように、Chromeの文に場所が含まれない誤りでは、行は出ません。

コメントを読める特別な形のJSONもある

拡張子が .json でも、コメントを書いてよいファイルがあります。 決めているのはJSONの決まりではなく、そのファイルを読むプログラムです。

  • VS Codeの設定ファイル: settings.json などは「JSON with Comments」という形で読まれ、// と /* */ を書ける。末尾のカンマも読めるが、警告が出る
  • tsconfig.json: TypeScriptの設定ファイル。手元のTypeScript 5.9で確かめると、コメントと末尾のカンマを書いてもそのまま読めた
  • package.json: npm 10.9で確かめると、コメントを書いた時点で「EJSONPARSE」というエラーになった

npmの説明書も、package.jsonはJavaScriptの書き方ではなく、本物のJSONでなければならないとしています。 同じ .json でも、読むプログラムによって結果が分かれます。

コメントの代わりに説明を残す3つの方法

JSONのまま説明を残したいときは、書き方を変えます。

説明用の項目を足す

説明を、ふつうの項目として書き足す方法です。

{
  "_comment": "1ページの件数",
  "limit": 20
}

これは正しいJSONなので、どこでも読めます。 ただし、説明もデータの1つとして読み込まれます。 知らない項目があるとエラーにするプログラムでは使えません。

YAMLで書いてからJSONに直す

YAMLという形式なら、行の頭の # からあとをコメントとして書けます。

# 1ページに出す件数
limit: 20
# 並べる順
sort: new

コメントを残した元のファイルはYAMLで持ち、使うときだけJSONに変換します。 YAML⇔JSON変換でこのYAMLを変換すると、JSONが出たうえで「コメント 2 件は残せませんでした」と知らせます。

JSON5を使う

JSON5は、コメント・末尾のカンマ・単引用符などを足した、JSONの仲間の形式です。 読むプログラムがJSON5に対応しているときだけ使えます。 決まりどおりにJSONを読むところに渡すと、コメントの部分でエラーになります。

コメントの入ったJSONを貼るときの手順

人から受け取った設定を整形したいとき、コメントが入っていることがあります。 次の順で直すと、エラーの場所を追いやすくなります。

  1. // から行の終わりまでと、/* */ で囲まれた部分を消す("limit": 20 // 件数 のように、行の途中にあるものも消す)
  2. 最後の項目の後ろに残ったカンマを消す
  3. JSON整形ツールで整形し、エラーが出たら示された行と、その前の行を見る

エラーの読み方とよくあるミスは、JSONのエラーが出たときに整形して読みやすくするコツにまとめています。

関連記事

参考・出典

本記事は上記の公的機関・公式情報源を参考にしています。最新の情報は各リンク先をご確認ください。

あわせて読みたい

同じテーマ・関連ツールの記事です。