テキストファイル形式 - .json, jsonc, .json5

 クラウディア
1. 概要
2. 形式
3. コメント
4. 末尾のカンマ

1. 概要

 「JSON」自体が「JavaScript Object Notation」の頭文字をとっておるのですが、今回(2023年1月26日)、改めて知りました。  名前のとおり、「JavaScript」から使われ始めたようです。  現行のシステムで使用しているものは、多いですな、「PHP」「Python」あたりでもよく使われているようで。  今回、自分の「FreeBSD」マシンのホームディレクトリ以下を「*.json」で「find」してみたら。  ファイル数で、3340 もあったのでいささか驚きました。  まぁ、複数バージョンが同居していたりもしますが。  「.jsonc」「.json5」は、「.json」からの派生なので、まとめて、ここに書いちゃうつもりです。  「jsonp」なるものもありますが、これは、形式というより仕組みのようです。  ちなみに、「.yaml」や「.toml」っていうファイルもありますが、さわったことはあるものの、これらにまで言及するかはわかりません。  「.yaml」や「.toml」も「.json」の派生らしい・・・。  改めて、リンクを・・・。
JavaScript Object Notation

2. 形式

 形式をさわりだけ。  あまり、良くないサンプルですが

{
	"root"    : "https://ドメイン名/",
	"contents": "/パス/contents.json",
	"exclude" : [ "https://www.sing.ne.jp/パス", "https://www.sing.ne.jp/パス" ],
	"exclkey" : [ "#", ".wav", ".mp3" ],
	"output"  : "/パス/sitemap.xml"
}
 自前で、サイトマップを作成する際に、使用した、定義ファイルです。  「{}」で囲んだり、「項目名:値」の形式になっていることがわかります。  複数の項目がある場合は、「,」で区切ること。  「[]」で囲んでいるものは、配列になります。

3. コメント

 「.json」の問題は、コメントが書けないことにあったようです。  実際、プログラムで読み書きする、単なる、データファイルであれば、それでも特に問題はありません。  これが、初期化ファイルやなにかの定義ファイルで、人が読み書きするとすれば。  コメントがいれられないのは、とても不自由です。  この問題を解消したのが、「.jsonc」だそうでありまして。  「C言語」形式のコメントが入れられます。  すなわち、「//」以降が、行末までのコメントで、「/*」から「*/」までが、複数行可能なコメントです。

4. 末尾のカンマ

 カンマであろうが、コンマであろうが、トンマであろうが構いませんが、項目を区切る「,」。  これが、他の言語でも、なかなか問題になることがあります。  まぁ、「SQL」でもそれ、言えますわな。  多くの人は、これを「ケツカンマ問題」と言っているようで。  やぁねぇ、お行儀が悪いわ。  せめて「おしり」と言ってほしい。  ここでは、「末尾のカンマ」と言いますが。

{
	"a" : "1",
	"b" : "2"
}
 と書いてあるものに、「"c" : "3"」を加えたいとき。  「.json」の場合、「"b" : "2"」の末尾に「,」をいれないとエラーになっちゃうわけです。  この1文字が、案外面倒くさい。  やったことのある人ならば、「イー!!!」ってなっちゃったはずである。  もう、こういうのは、元々のものから

{
	"a" : "1",
	"b" : "2",
}
 をオッケーにしちゃって、次の項目がなくてもいいことにしちゃわない?って考えがわいてくるわけです。  次をいれるときは「"c" : "3",」にしちゃって、常に、末尾に「,」がある形にしておけば、データの増減が楽になるのです。  それを実現したのが、「.json5」のようです。
earthcar(アースカー)