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
[ ページ先頭へ ]