空想犬猫記

※当日記では、犬も猫も空想も扱っておりません。(旧・エト記)

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.jsAjax クラスを使い,レスポンスに対して responseXML の代わりに responseText を取得し

var result = eval('(' + res.responseText + ')');

すると,API の返り値をそのまま JavaScript のオブジェクトとして利用できるようになる。使ってみて,気付いた利点としては

  • データ転送量が半減
  • DOM の汚い get/set API を減らすことができる。get... や set... が . や [] で書ける

辺り。日本語を使う場合には,文字コードの問題が少し気になるところではあるが,UTF-8 を使っておけば問題無さげ。JSON じたいは,他のプログラミング言語でもかなりサポートされているもよう。JavaScript で利用することをメインに考えると,こっちのほうが圧倒的にストレスが少ないので,積極的に利用して行こうと思う。

また私の中で JavaScript の株が上がった。