昨年末にI-JSONがLast Callになりました。普通のJSONでは互換性の為に一部柔軟な記法を認めていたり、複数の記法を認めていたりします。これだとパーサを書く為に通常ほとんど使われないようなケースにも対応する必要があり、実装が煩雑になっていたりしました。またオブジェクト中に重複するキーの存在を許容していたりするなど、データ交換において思わぬ弊害を生む要因がいくつかありました。それらを改善する為に、既存のJSONの記法にさらに制限を加えたのがI-JSONです。
I-JSON自体はJSONと100%互換性があります。JSONに新たに加わる制限は以下の通りです。
- UTF-8限定 (JSONはUTF-8, UTF-16, UTF-32推奨)
- 数値は[-2^53+1, +2^53-1]の範囲
- オブジェクト中の重複するキー名は禁止
- オブジェクト中の要素は並び替えても良い
- トップレベルの要素は、配列かオブジェクトであるべき。
- 日時表記はISO 8601推奨
- バイナリデータはBASE64エンコーディング推奨
これらの制限を入れることで、パーサの実装はかなり楽になります。また、値の範囲に制限が設けられることで、データ交換において厳密性が向上することにもなります。
しかしながらJSONのパーサは既に数多く開発されているという現実を見ると、データ交換の厳密性向上という点を考慮してもI-JSONを積極的に採用していくケースはあまりないのではないかなあ、という気がしてしまいます。