JavaScriptのJSONでDate型を扱う

JavaScriptJSON.stringify、JSON.parseはDateに対応していない(というかJSONの仕様に日付型がそもそもない)。なのでJSON.stringifyをDateに対して実行するとISO 8601フォーマットでの日時を表す文字列になる。

var str = JSON.stringify(new Date());
console.log(str); //"2014-03-18T23:05:45.477Z"


一度こうなったらJSON上ではただの文字列型なので、この文字列をJSON.parseしても結果はただのstring型になってしまう。

var obj = JSON.parse(str);
console.log(typeof(obj)); //string


JSON.parseは第2引数に挙動をカスタマイズする関数オブジェクトが渡せるようになってるので、これを使って日付っぽい文字列が来たら日付として扱うことにする。

モダンなブラウザーなら動くんじゃないかな多分。