JSON フォーマッターの背景にある物語

JSON は今やほとんどの Web API が使う形式ですが、委員会が設計したものではありません。発明というより発見されたものです。プログラム間でデータを受け渡すのにちょうど足りる、JavaScript の小さな部分集合でした。

波かっこと入れ子のデータブロックが光る木を形づくる様子
波かっこと入れ子のデータブロックが光る木を形づくる様子

発見された形式

2001 年ごろ、Douglas Crockford と State Software の同僚たちは、プラグインなしでブラウザーとサーバーがデータをやり取りする方法を探していました。JavaScript がすでに理解していたオブジェクトと配列のリテラルを使い、そのアイデアに名前を付け、文法を json.org に公開しました。名刺の裏に収まるほど短いことで知られています。

コメントがない理由

Crockford は早い段階で JSON からコメントを取り除きました。コメントにパーサー向けの指示を書く人が出てきて、相互運用性が壊れかねなかったからです。彼の助言は、解析の前に圧縮ツールでコメントを消すことでした。そのためフォーマッターはコメントを予期しない文字として報告し、設定ファイル向けには JSON5 や JSONC といった形式が生まれました。

Web ページから標準へ

JSON は 2006 年に RFC 4627 として初めて記述されました。Ecma は 2013 年に ECMA-404 を公開し、IETF は 2017 年に旧文書を RFC 8259 で置き換え、システム間でやり取りする JSON に UTF-8 を求めました。文法は json.org 以来ほとんど変わっていません。オブジェクト、配列、文字列、数値、true、false、null です。

数値とパス

JSON 自体は数値を制限しませんが、多くのパーサーは 64 ビット浮動小数点数として保存します。そのため 9007199254740991 を超える整数は気づかないうちに精度を失うことがあり、大きな ID は文字列で送られることがよくあります。値を指し示す方法として、Stefan Goessner が 2007 年に XPath をもとに JSONPath を提案し、2024 年に RFC 9535 として標準になりました。このフォーマッターがコピーするパスは、ドル記号と角かっこを使うその記法に従います。

よくある質問

JSON を発明したのは誰ですか?

Douglas Crockford が 2000 年代初めに JSON を仕様化し、広めました。本人は発見したと言っています。すでに存在した JavaScript の部分集合だからです。

なぜ JSON は末尾のカンマや一重引用符を許さないのですか?

どの言語でも同じように解析できるよう、文法をできるだけ小さく保ったからです。便利な機能を一つ足すたびに、二つのパーサーの結果が食い違う機会が増えます。

JSON は JavaScript のオブジェクトと同じですか?

いいえ。JSON はテキストです。キーには二重引用符が必要で、関数、undefined、コメント、NaN、Infinity は使えません。JavaScript のコードでは使えてもです。

試してみますか?

ブラウザで PictorX を開きます。インストール不要、始めるのにクレジットカードも不要です。

JSON フォーマッターを開く