とても素敵なデータ表現言語(やや難あり)

とても素敵なデータ表現言語(やや難あり)

JSONは便利なデータ表現なんだけど、

  1. 型情報が付加できない
  2. ハッシュのキーに引用符を付けるのがイヤ

という理由で(2番目はあまり本質的ではないけど)、JSON改(後でXionに改名)というデータ表現を提案しました。

JSON:

{
 "familyName" : "板東",
 "givenName" : "トン吉",
 "age" : 27,
 "sex" : "male",
 "company" :
  {
   "name" : "(株)東西トラベル",
   "url" : "http://www.example.jp/tozai-travel/"
  },
 "hobbies" : ["盆栽", "釣り", "版画"]
}

JSON改(Xion):

Person {
 familyName : "板東",
 givenName : "トン吉",
 age : 27,
 sex : Sex "male",
 company :
  Company {
   name : "(株)東西トラベル",
   url : URL "http://www.example.jp/tozai-travel/"
  },
 hobbies : ["盆栽", "釣り", "版画"]
}

JSON改の表現では、Person, Sex, Company, URLがデータ型を示す識別子(型名、ソート)です。

とても素敵なデータ表現言語(やや難あり) - 檜山正幸のキマイラ飼育記 (はてなBlog)


うーん、これなら YAML でいいと思う。YAML だと「!Sex "male"」とかでタグを使った明示的な型指定ができるし、ハッシュのキーに引用符をつける必要もない。JSON との互換性もあるし、循環構造も表現できるし、日時 (timestamp) もサポートしている。

YAMLも書きやすく読みやすいですね。構文フレーバー(好み)の問題かもしれませが、循環構造を表す(そうしたい)ときは、JSONのほうがやや有利な気がします。

http://d.hatena.ne.jp/m-hiyama/20060524#c1149125319

循環構造を表すなら YAML だ。JSON では循環構造を表せない。YAML なら anchor と alias を使うことで、何の苦もなく循環構造を表現できる。