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;

もっといい方法があるような気がする...