JSON
前々から知ってたけど,手つかずだった JSON を試しに触ってみた。Ajax (Asynchronous JavaScript and XML) で,XMLでデータを送る代わりに,JavaScriptのオブジェクトをそのまま送ってしまうという方法。Ajax ならぬ Aja です。3つ以上の単語をイニシャルで言うとカッコいいのに,2つの単語を短縮した用語は何となく,クールじゃないのは何でだろね。
今回は Ruby の json モジュールを使ってみた。
% gem install json
このモジュールを利用すると,object クラスに to_json メソッドが追加される。
require 'cgi' require 'json' def run cgi = CGI.new print cgi.header("text/javascript") json = {} begin build_json(json) print json.to_json rescue print '{ "error" : 99, "message", "Failed." }' end end
こんな感じでbuild_json の中で hash オブジェクトを作成し,to_json メソッドで Ruby オブジェクトを JavaScript オブジェクトの記法に変換してくれる。prototype.js の Ajax クラスを使い,レスポンスに対して responseXML の代わりに responseText を取得し
var result = eval('(' + res.responseText + ')');
すると,API の返り値をそのまま JavaScript のオブジェクトとして利用できるようになる。使ってみて,気付いた利点としては
- データ転送量が半減
- DOM の汚い get/set API を減らすことができる。get... や set... が . や [] で書ける
辺り。日本語を使う場合には,文字コードの問題が少し気になるところではあるが,UTF-8 を使っておけば問題無さげ。JSON じたいは,他のプログラミング言語でもかなりサポートされているもよう。JavaScript で利用することをメインに考えると,こっちのほうが圧倒的にストレスが少ないので,積極的に利用して行こうと思う。
また私の中で JavaScript の株が上がった。