/ #javascript 

日付が含まれているJSONをJavascriptで扱う場合の注意

RubyでTimeクラスのオブジェクトを含んだハッシュからJSONを生成し、そのJSONをJavascriptで扱う際、Dateインスタンスに変換するところで失敗したので対処内容をメモ。(Chromeだとパースしてくれたが、他のブラウザでNGだった)

RubyのJSONライブラリでTimeクラスのオブジェクトをto_jsonすると、

[bash]
1.9.3p448 :003 > require ‘json’
 => true 
1.9.3p448 :004 > Time.now.to_json
 => “\”2013–09–08 12:12:12 +0900\”” 
[/bash]

のような形式で出力される。この形式が問題のようだ。

[javascript]
var t1 = “2013–09–08 12:12:12 +0900”; 
var date1 = new Date(t1); // 変換に失敗する
[/javascript]

RFC2822形式にすれば、主要なブラウザでは大丈夫そうなのでTimeクラスのto_jsonをオーバーライドする。

[ruby]
class Time 
 def to_json(*a) 
 rfc2822.to_json(*a) 
 end 
end 
[/ruby]

もっと良い解がありそうな気もするが、とりあえず。

Edit(Admin)