# is a hash, but no class marker; simply revivify innards
for my $k (keys %$obj) {
$obj->{$k} = $pkg->JSONObject2Perl($obj->{$k})
- unless ref $obj->{$k} eq 'JSON::XS::Boolean';
+ unless ref $obj->{$k} eq 'JSON::XS::Boolean' || eval {Types::Serialiser::is_bool( ref $obj->{$k} )};
}
} elsif ( ref $obj eq 'ARRAY' ) {
# not a hash; an array. revivify.
for my $i (0..scalar(@$obj) - 1) {
$obj->[$i] = $pkg->JSONObject2Perl($obj->[$i])
- unless (ref $obj->[$i] eq 'JSON::XS::Boolean');
+ unless (ref $obj->[$i] eq 'JSON::XS::Boolean' || eval {Types::Serialiser::is_bool( ref $obj->[$i] )});
# FIXME? This does nothing except leave any Booleans in
# place, without recursively calling this sub on
# them. I'm not sure if that's what's supposed to
my $ref = ref $obj;
return $obj unless $ref;
- return $obj if $ref eq 'JSON::XS::Boolean';
+ return $obj if $ref eq 'JSON::XS::Boolean' || eval{ Types::Serialiser::is_bool($ref) };
my $jsonobj;
is (OpenSRF::Utils::JSON->perl2JSONObject(3), 3, "Returns argument unless it's a ref");
is (OpenSRF::Utils::JSON->perl2JSONObject('foo'), 'foo', "Returns argument unless it's a ref");
-is (ref OpenSRF::Utils::JSON->true, 'JSON::XS::Boolean');
-is (OpenSRF::Utils::JSON->perl2JSONObject(OpenSRF::Utils::JSON->true), '1', "Returns argument if it's a JSON::XS::Boolean");
+ok (ref OpenSRF::Utils::JSON->true eq 'JSON::XS::Boolean' || eval{Types::Serialiser::is_bool(ref OpenSRF::Utils::JSON->true)});
+is (OpenSRF::Utils::JSON->perl2JSONObject(OpenSRF::Utils::JSON->true), '1', "Returns argument if it's a JSON::XS::Boolean or Types::Serialiser->is_bool");
my $hashref = { foo => 'bar' };
is (UNIVERSAL::isa($hashref,'HASH'), 1);