perlのJSONモジュール
perlのJSONモジュールについてのメモです。
JSONモジュールはその名の通り、JSONデータのデコード・エンコードをしてくれます。レンタルサーバでも導入されてるケースが多いみたいです。
文字コードの処理は一緒にやってくれますし、文字コードは触らないで欲しい場合の関数もあります。
JSONを扱えるモジュールは他にもあります。個人的には最初に使って、特に問題なかったので使っているレベルです。もっとよいのあれば、お勧め教えてください。
基本の使い方
use JSON
すると、関数が4つインポートされます。
utf8の文字コード処理を一緒にやってくれるencode_json, decode_json
、文字コードは触らないto_json, from_json
です。
use utf8; # このスクリプトはutf8。 use JSON; # 基本の4つの関数がインポートされる # 例えば以下のハッシュリファレンスを my $output_data = { number => 1, list => [10, 20, 30], text => '全角文字', }; # JSON形式に。 my $json_text = encode_json( $output_data ) ; # たとえばこんな感じでブラウザに返す? print "Content-type: applecation/json; charset=utf-8\n\n$json_text"; # 受け取ったJSON形式のデータを my $input_json = (どこかから取得); # デコードしてハッシュに格納 my $data_ref = decode_json( $input_json ); my $num = $data_ref->{'number'}; # たとえば。
文字コード触らないパターン
最近のWEB関係はutf8多数派なので上記で良さそうなのですが、たまに文字コードを触ってもらいたくないことがあります。
あえてuse utf8しないことにしたとか、DBやファイルとのインターフェイスがアレだとか。
use JSON; use Encode qw(from_to); # perl的には単なるバイト列だと思っているデータ。 my $output_data = { number => 1, list => [10, 20, 30], text => '全角文字', }; # JSONってutf8だよね? foreach (%$output_data) { # このプログラムはEUCだった。 from_to($_, 'eucjp', 'utf8'); } # それをそのままJSONに。 my $json_text = to_json( $output_data );
泥臭いスキマ埋め作業も上手にやってくれるperlの健気さ万歳です。
最終更新日:2015/04/03
[ ページ先頭へ ]