一汁三菜

自分が楽しいと思うこと、マラソン、旅行、その他日々の記録をしたい。

I-JSON

昨年末にI-JSONがLast Callになりました。普通のJSONでは互換性の為に一部柔軟な記法を認めていたり、複数の記法を認めていたりします。これだとパーサを書く為に通常ほとんど使われないようなケースにも対応する必要があり、実装が煩雑になっていたりしました。またオブジェクト中に重複するキーの存在を許容していたりするなど、データ交換において思わぬ弊害を生む要因がいくつかありました。それらを改善する為に、既存のJSONの記法にさらに制限を加えたのがI-JSONです。

I-JSON自体はJSONと100%互換性があります。JSONに新たに加わる制限は以下の通りです。

  • UTF-8限定 (JSONUTF-8, UTF-16, UTF-32推奨)
  • 数値は[-2^53+1, +2^53-1]の範囲
  • オブジェクト中の重複するキー名は禁止
  • オブジェクト中の要素は並び替えても良い
  • トップレベルの要素は、配列かオブジェクトであるべき。
  • 日時表記はISO 8601推奨
  • バイナリデータはBASE64エンコーディング推奨

これらの制限を入れることで、パーサの実装はかなり楽になります。また、値の範囲に制限が設けられることで、データ交換において厳密性が向上することにもなります。

しかしながらJSONのパーサは既に数多く開発されているという現実を見ると、データ交換の厳密性向上という点を考慮してもI-JSONを積極的に採用していくケースはあまりないのではないかなあ、という気がしてしまいます。