特殊なエスケープシーケンスを含む場合のJSONエンコード

JSON::Syckを使ったDumpでちょっとハマったのだけど、コレを使ってJSONエンコードを行うと、エスケープシーケンスがそのまま(?)出てしまって、微妙なかんじになる。

$ perl -MJSON::Syck=Dump -E 'say Dump({ hoge => "fu\x{1b}ga" })'
{"hoge":"fu\ega"}

多分こういうのはUnicode escape sequenceで表現されるべきなのだけど、JSON::Syckではそれが出来なそう…
なので、素直にJSON::XSとかを使った方が良さげ。

$ perl -MJSON::XS -E 'say JSON::XS->new->encode({ hoge => "fu\x{1b}ga" })'
{"hoge":"fu\u001bga"}