きっかけは、昨夜の思いつきでした。
今日ふと思ったこと: JSONって、そもそもカンマ要らないんじゃね?
— Kota Mizushima (@kmizu) 2016年11月6日
{ "Foo" : "BAR" "BAR": "Baz"
"Hoge" : { "name" : "Hoge" } }
特に曖昧性なくパーズできるように思える。配列も同じく。
JSONでも以前から、末尾のカンマを許すようにしてほしいとかそういう要望があったと記憶していましたが、そもそもカンマを要らなくすれば解決では?というのが動機です。
NSONは次のような特徴を持っています。
まず最初の点についてですが、たとえば、
{ "x": 1 "y": 2}
のような記述ができるということです。また、改行で要素を区切って
{ "x" : 1 "y" : 2 }
のように書くこともできます。
その次の点ですが、これは最初の点と同じようなものです。
{ "like": ["Scala" "Nemerle" "Scheme"] }
このように、配列の要素をカンマで区切る必要がありません。
3番目の点ですが、これは、JavaScriptでは許されていたものの、JSONでは許されなくなった点の一つであり、たとえば、
{ x: 1 y: 2}
のような記述が許されます。
最後の点ですが、これはそのままです。JSONで正しいデータはNSONでも正しいデータです。たとえば、
{ "x": 1, "y": 1}
は正しいJSONのデータであり、かつ、正しいNSONのデータです。
詳しくは、以下のURLを参照してください。
GitHub - kmizu/nson: NSON: an object notation that is not a JSON but alike JSON.
NSONは構文上の実験であり、今後メンテナンスしていくかは正直微妙です。これを拡張していくことで何か書きやすいデータフォーマットが生まれる可能性もあるので、思いついたら何か手を加えていくかもしれません。
ちなみに、思いついてからNSONのパーザを書いて、ある程度動作するようになるまで3時間くらいでした(自作のKlassic言語のパーザがある程度流用できたので、ちょっとズルいかもしれません)。こと構文解析においてはさすがだな自分と自画自賛しておきます。