このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

XJSON - JSON

あんれ、また間違えた。これはメモ編(「檜山本人以外の読者を考慮しておりません。あしからず。」)のほうに投稿したつもりだった。こっちから消してもいいんだけど、なんかのご縁(?)だから、とりあえず残しておいて、後で説明を付け加えようかな。

[追記]後ろに解説を書きました。タイトルの「XJSON - JSON」は、引き算の意味です。つまり、XJSONとJSONの差分の説明です。[/追記]


表面的な拡張:

  1. コメント(保存されない)
  2. 余分なカンマ
  3. 三重引用符

構造的な拡張:

  1. タグ
  2. 組み込みのバイナリー型
  3. ハイパーリンク(未定){"$ref" : "http://d.hatena.ne.jp/", "$rel" : "top"}

マーシャリング:

  • コメントを除いて、すべての拡張部分は情報欠損無しで通常JSONに変換出来る。

コメントは削除されるので、もとに戻せない。


XJSON(Extended JSON)は、Catyで使っているデータ構造で、その名のとおりJSONを拡張しています。次はXJSONインスタンスの例です。

/* 従業員 */

@EmployeeList [
 // わが社のホープ
 @Person {
  "name" : @PersonNameJa "板東 トン吉",
  "tel" : @TelNo "03-0000-9999",
  "age" : 26,
 },
 // わが社のアイドル
 @Person {
  "name" : @PersonNameJa "園部 ハナ子",
  "tel" : @TelNo "04-1111-1111",
  "age" : 22,
  "message" : '''こんにちは、園部です。
みんなに「美人だね」とか「可愛い、可愛い!」っていつも言われるんですが、
自分ではそんなことないと思ってます。性格は控えめですし。
それより、頭がよくて運動神経抜群なところが自慢なんですよ、ワタシ。
よろしくね。'''
 },
]

/* ... */ や // ... のところはコメントです。オリジナルのJSONではコメントが書けなくて不便なんで入れました。

配列の最後の項目や、オブジェクトの最後のプロパティの後にカンマがあってもエラーにしません。どうしてこんな仕様を導入したか? コピー&ペーストや1行削除でデータを編集していて、最後のカンマに腹を立てた経験がありませんか? その経験がある人ならわかりますよね。

改行を含む文字列は、\n というエスケープで書けますが、見にくくてイヤ。だから三重引用符(WYSIWYG文字列)があります。

データの種別や用途を表すためにアットマークから始まるタグを使えます。タグは任意に入れ子にできるので、@mony @yen 1200 のようにも使えます。Caty内では、タグはユニオン型(直和型)の弁別子や多方向分岐の目安にも使われています。

画像データなども表現できるように、バイナリ型を持ちます。ハイパーリンク参照型はまだ検討中です。

これだけ拡張しているんですが、XJSONデータを通常のJSONにより表現できます。コメントが削除される以外はすべての情報は保存されます。