BEGIN { $| = 1; print "1..6\n"; } use JSON::XS; our $test; sub ok($;$) { print $_[0] ? "" : "not ", "ok ", ++$test, "\n"; } my $o1 = bless { a => 3 }, "XX"; my $o2 = bless \(my $dummy = 1), "YY"; sub XX::TO_JSON { {__,""} } my $js = JSON::XS->new; eval { $js->encode ($o1) }; ok ($@ =~ /allow_blessed/); eval { $js->encode ($o2) }; ok ($@ =~ /allow_blessed/); $js->allow_blessed; ok ($js->encode ($o1) eq "null"); ok ($js->encode ($o2) eq "null"); $js->convert_blessed; ok ($js->encode ($o1) eq '{"__":""}'); ok ($js->encode ($o2) eq "null");