JSONファイルに「データ」としてコメントを書く

何かの設定ファイルとかでJSON使ってて、ファイル内にコメントを書きたくなったり、一時的に設定変更するのに、前の値をコメントアウトして残して置きたかったりとかありますよね
(きっと私だけではないはず)

JSONファイル内には、基本的にコメントが書けなくて、困ってたんですが、先日いい方法を教えていただいたので、メモ&共有します

JSON

JavaScript Object Notation(JSON)は、これを可能にするデータ交換形式です。 JSONは、人間が読めるテキストであり、軽量で、コーディングが少なくて済み、処理が高速であるため、データ形式として多くの開発者に選ばれています。

https://www.oracle.com/jp/database/what-is-json/#:~:text=JavaScript%20Object%20Notation%EF%BC%88JSON%EF%BC%89%E3%81%AF,%E3%81%AB%E9%81%B8%E3%81%B0%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82

1. コメントをデータとして保持する

単純にJSONのルールに乗っ取ったデータの一つとして、コメントを保持するようにします。

こんな感じ。

{
    "_comment": "コメントをデータとして保持する",
    "id": "hogehoge_id",
    "name": "ほげほげ"
}

データとして、使用しないことが分かりやすいように、キー名を_(アンダースコア)始まりにするとか、それぞルールを決めておくと良いかと思います。

以下のように、キー名を空にしちゃうってのも一つの手です。

{
    "": "コメントをデータとして保持する",
    "id": "hogehoge_id",
    "name": "ほげほげ"
}

2. 2行以上のコメントも書きたい

はい、そういう時もありますよね。でもこれも同様にJSONのデータとして持たせちゃえばいいんです。

こんな感じで配列にしてしまいます。

{
    "_comments": [
        "1行目のコメント",
        "2行目のコメント"
    ],
    "id": "hogehoge_id"
}

3. 複数のキーに対して、それぞれにコメント付けたい

要するにJavaScriptであれば、こういうことができます。

// TwitterのIDが入ってる
var id = "hogehoge_id";
// Twitterの名前
var name = "ほげほげ";

こんな感じでJSONファイルにもコメント付けてたい場合はどうするのが良いのでしょう?

こんなやり方があります。

{
    "id": "TwitterのIDが入ってる",
    "id": "hogehoge_id",
    "name": "Twitterの名前",
    "name": "ほげほげ"
}

JSONでは、キーが重複している場合、前に書いた方は無視されます。(上書きされます)

そのため、上記のような書き方ができます。ただ、可読性が落ちることは否めないですね。

4. JSONCを使う

もし、JSONCを使える環境であれば、これが最もスマートな解決策となります。

JSONCとは

JSONCは、コメントを含めることができるJSONです。JSONCでは、ブロック(/ * * /)および単一行(//)コメントを使用することができます。

Microsoft公式がparserを開発・公開しているため、かなり使いやすくなりました。Visual Studio Code では標準機能としてJSONCを取り扱うことができるようになっています。

GitHub - microsoft/node-jsonc-parser: Scanner and parser for JSON with comments.
Scanner and parser for JSON with comments. Contribute to microsoft/node-jsonc-parser development by creating an account on GitHub.

書き方

特殊な書き方はないです。単純にJSONでコメントが使えるというだけです。

{
    // これはTwitterのidです
    "id": "hogehoge_id",
    /*
      この先は必須ではない
    */
    "name": "ほげほげ",
    "created": "2020/1/12"
}

まとめ

JSONファイルにコメントを書く方法をいくつかご紹介しました。とりあえず私は、一番上の"_comment"のパターンを使っています。

どれを使うかは好みの問題ですが、チーム開発なんかではもし使うのであれば、統一した方がいいでしょう。

タイトルとURLをコピーしました