JSONIC

久々にいじろうかなと思い始めたのだが、あらぬ方向に仕様が変更されそう。ポステルの法則に従うならば、formatに拡張モードは用意すべきではないし、逆にparseは常に拡張モード扱いでいいことになる。だから、拡張モードなんて廃止してしまえ、という気になった。

で、だったらもっといびつなJSONが読み込めてもいいんじゃないかと思い始めた。例えば、こんなの。

ルート要素がオブジェクトでも配列でもない場合は、オブジェクトにラップされているとみなす。

// {"aaa": "bbb"} と等価
"aaa": "bbb"

カンマの代りに改行で区切られていても要素が分解されているとみなす

// {"aaa": "bbb", "ccc": "ddd"} と等価
{
  "aaa": "bbb"
  "ccc": "ddd"
}

リテラルOK

// {"aaa": "bbb ccc ddd"} と等価
{ aaa: bbb ccc ddd }

[2007/09/09追記] 空白を含むリテラル列をOKにするのはまずいことに気づいたので、Javaリテラル列ならOKというように変更しよう。

これだったら正当なJSONはきちんと読み込まれつつ、変なデータも読み込めるようになる。なお、Pythonライクにtabで判断とかそういう方向性は、昔Makefileで痛い目にあって以来嫌いになったのでやりませんです。はい。