[Perl] JSON モジュール 2.x 系は、1.x 系と互換性が△

JSON モジュールがバージョンアップして、2.0 台に突入!
 
JSON::XS モジュールとの互換性(ソース&ドキュメントも!)を実現した代わりに
従来の JSON.pm のインターフェースが obsolete になってしまうのは残念。
今後、JSON.pm は XS 版の JSON::XS とほぼ同機能の Pure Perl 版の JSON::PP の
いずれかを自動選択してくれるラッパーとしての道を歩むようです。

1.15 までで使えていたオプション・メソッドの一部が 2.0x では使えなくなってるので要注意。
例えば、bless 状態を無視する convblessed が使えない。
Can't locate object method "convblessed" via package "JSON" at ...

代わりに、as_nonblessed を利用する。
$json->allow_blessed->as_nonblessed->encode($perl_scalar)

ただし、JSON::XS では非対応で、JSON::PP のみの EXPERIMENTAL なメソッドらしい!

JSON::XS は、to_json メソッドの普及を期待しているのかもしれないけど、
各クラスにいちいち to_json メソッド作りたくないなぁ。
僕にとって JSON はシンプルが大事なので、bless は無視して欲しいッス。



PS)
JSON.pm は pure perl で使いやすく、結構導入していたので、
こう API 仕様が大きく変わると影響が大きく、正直なところ、
こう変わるなら別のモジュール名にして欲しかった気もしますが、
とはいえ、日本人のリリースながらメジャーへの道を歩んでいる
JSON.pm には今後も期待であります!
 

この記事へのコメント

makamaka
2008年01月06日 17:24
明けましておめでとうございます。まかまかです。
旧年中はお世話になりました。

JSON 2.0のAPI変更では色々な方からご批判を受けてまして、
本当ご迷惑おかけしております。すいません。
bless無視機能についてはXSの作者の方にも実現をお願いして
いこうと思っています。

XML::FeedPP::Plugin::DumpJSONのChangesにPPのutf8ハンドリングに
問題有りとありましたが、どのような内容でしょうか。
差し支えなければ教えていただけると助かります。

それでは今後とも何卒よろしくお願いいたします。
2008年01月07日 05:24
ありがとうございます。> まかまかさん

問題かと思ったのは、JSON モジュールの
utf8 処理の仕様のようです。スミマセン!
http://kawa.at.webry.info/200801/article_6.html
で文字化け回避の方法など詳しくまとめました。

この記事へのトラックバック