blessされたオブジェクトをJSONに変換
#!/usr/local/bin/perl -w use strict; use warnings; use utf8; use JSON; my $obj = new Target('hounobouno'); # 変換対象インスタンス生成 my $json = new JSON; # JSONインスタンス生成 $json->convert_blessed; # blessedObjectが渡されたらTO_JSONを呼ぶように設定 my $json_text = $json->encode($obj); # 変換 # こう書くことも可能と #my $json_text = $json->allow_blessed->convert_blessed->encode( $obj ); print $json_text; exit; # 変換対象obj package Target; use strict; use warnings; use utf8; sub new { my $class = shift; # パッケージ名 # プロパティ初期化 my $self = { text => shift, }; return bless $self, $class; } # 変換時に呼ばれる sub TO_JSON { my $self = shift; my %h_self = map { $_ => $self->{$_} } keys(%$self); # インスタンスをhashに変換 return { ref($self) => \%h_self }; # パッケージ名を付与して返却 } 1;
もっといい方法があるような気がする...