落ち着きつつあるAjaxを取り込んだWebアプリケーション開発への取り組み。後発でもアイデアはまだまだ出尽くしていない。基本を復習して新たなサービスへとつなげてみよう。
Ajaxというと、XMLでデータを送受信するというイメージがある。
しかし、実際にはXMLである必要性はない。むしろXML形式ではないほうが、送受信データパースの手間が必要ないというケースが多いのだ。
一方で、XMLでデータをやり取りできる利点を生かせば、当然ながらWebサービスとの効果的な連携も現実的なものになってくる。今回は、Ajaxアプリケーションにおいてよく用いられる「JSON」と呼ばれるデータ形式について解説しよう。
このオンライン・ムックPlus「Web 2.0で変わるWebプログラミングの常識」では、これまでにAjaxの概要(第1回)から発展系としてどのような取り組みあるのか(第2回)について解説した。このオンライン・ムックPlusを読むことで、Web2.0と称する新たなWebテクノロジーの象徴の一つといえるAjaxについて、深く知り、自らでWeb2.0対応とうたうことが可能なWebアプリケーションを作り上げることができるだろう。
第2回目までは、Ajaxで加算/減算を行う簡単なサンプルを紹介している。このサンプルを実際に動かしてみると、XMLデータの生成やパースの複雑さが分かるはずだ。
簡単なデータ構造ならまだしも、配列や構造体をやり取りするとなれば、サーバ側でのXMLデータの生成はもちろん、クライアント側のXMLパース処理も複雑になる。その結果、パフォーマンスが劣化してしまうのだ。
Ajaxでデータの送受信に用いるXMLHttpRequestオブジェクトでは、responseTextプロパティを用いることでテキスト形式のデータが扱える。
つまり、XML形式にこだわる必要はないことを意味する。
例えば、カンマ「,」区切りテキストでデータをやり取りすることも可能だ。しかしカンマ区切りテキストにしたところで、パースが必要であるという点に変わりないのも事実だろう。
そこで、よりクライアント側の負担を軽減するデータ交換形式として幅広く用いられているのが「JSON(JavaScript Object Notation)」である。
JSONでは、JavaScriptにおけるオブジェクト表現と同じ書式のテキストを用いてデータを表現する。その仕様は、このサイト上で示されている。
JSON形式のデータとしては、例えば、次のような形式が挙げられる。
{"add":400,"diff":200}
このデータ文字列は、JavaScriptのeval関数を使っており、次のように前後に「(」と「)」を付けると、そのままパースできるのだ。
var result = eval('(' + '{"add":400,"diff":200}' + ')');
上記の例では、resultという名前のオブジェクトとして構成され、次のようにして参照することができる。
result['add']; // この値は400
result['diff']; // この値は200
Copyright © ITmedia, Inc. All Rights Reserved.