JSONの文法などについて、今年の2月1月からインターネットドラフト(I-D)が出されているが、はやくもInformational RFCとすることが決まった(I-Dは現在04版draft-crockford-jsonorg-json-04.txt)。MIMEタイプはapplication/json
とされている。
このI-D/RFCは、JSONの構文とMIMEタイプをオフィシャルな形で定義しようというもので、内容は基本的には既に知られている文法と違いはない。大まかに言えば、次のようなことが書かれている。
- JSONは4つの基本型(string, number, boolean, null)と、2つの構造型(object, array)で表現される。
- objectは、
名前:値
の組の順不同のコレクションで、これらの組を,
で区切り、{
と}
で囲む。名前はstringで、値は上記6つの型のいずれか。 - arrayは、値を
,
で区切って並べ、[
と]
で囲んだもので、順番を持つ。 - stringは、0以上の長さのUnicode文字列で、引用符
"
で囲んで記述する。 - numberは、整数部分にオプションで
+/-
記号、少数部分、指数部分を持つことができる10進数。整数部分の頭に余分な'0'をつけることはできず、16進数や8進数表記も使えない(これらはstringとして表す)。 - booleanは、
true
もしくはfalse
で、これらとnullは引用符なしで記述し、小文字でなければならない。
Javascriptではオブジェクトの名前は引用符で囲まなくてもたいてい使えるがあるが、JSONの文法としてはstringなので、常に引用符付きでないと構文違反になってしまう(このI-Dを読むまで気付かなかった。なおJSON parserでは、"Eaeflnrstu
"の各文字は直接記述してもパーサを通るようになっているが、これらは、指数を表すか[Ee]
、true
, false
, null
という文字を構成するために使うからで、名前として裸で用いてよいわけではない)。
MIMEタイプは、I-DではType name: text
となっているが、これはもちろんType name: application
の誤りで、RFCになるときには修正されるだろう。
しかし、RFCになることが決まったといっても、これがいつRFCとして公開されるかは未知数。なにしろ、半年以上前にRFC化が決定されたtext/javascript
が、番号が4329に決まって、原稿まで用意されているというのに、未だに正式なRFCとして出てこないきたのは4月になってからなのだから。
〔追記〕2006年7月末にRFC 4627として公開された。
- application/jsonがRFC4627に (2006-07-29)
- JSONではじめるRDF/Turtle (2006-02-21)
- スクリプトのMIMEタイプがRFCとなって公式登録へ (2005-06-28)