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

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

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

参照用 記事

リテラル好き、だからJSON、XML

「newが嫌いな理由 -- リテラル好き好き」で、コンストラクタに付けるnewが気に入らないのは、「インスタンスリテラルっぽく見えなくなるからだ」と説明しました。要するに、リテラルが好きだと言いたい。これ、単に個人的な嗜好です。

リテラルが好きなのですから、当然にJSONは好きです。JSONでは、数値リテラルと文字列リテラルをベースに、シーケンス(列、並び)とレコード(マップ、名前・値ペアの集合)のリテラルも構成できます。例えば、人物情報レコードのシーケンスはこんな感じ:[追記]以下の例において、name, age, uidなどの名前は二重引用符で囲む必要があります。コメント欄とhttp://d.hatena.ne.jp/m-hiyama/20060327/1143418528 参照![/追記]


[
{name:"板東トン吉",
age:27,
uid:"tonk"},
{name:"溝口花子",
age:23,
uid:"hanako-m"},
// ...
]

JSONはお手軽で便利なんだけど、シーケンスもレコードもuntypedで、意味的手がかりがありません。レコードのフィールド名にはそれらしい名前を付けられるけど、レコード全体、あるいはシーケンス全体がなんであるかを示す情報がないんですね。

もし、シーケンス、レコードの意味(のヒント)を、名前で付加できるとするならこんな感じでしょう。


EmployeeList[
Employee{
name:"板東トン吉",
age:27,
uid:"tonk"},
Employee{
name:"溝口花子",
age:23,
uid:"hanako-m"},
// ...
]

んっ、待てよ。これって:


<EmployeeList>
<Employee
name="板東トン吉"
age="27"
uid="tonk" />
<Employee
name="溝口花子"
age="23"
uid="hanako-m" />
<!-- ... -->
</EmployeeList>

XMLじゃん。だからヤッパリXMLも好き。

僕って、趣味一貫しているぜ -- お粗末様でした。