use strict;
use warnings FATAL => 'all';
-use Carp;
use base qw(Exporter);
-
-use YAML;
-
-
-our $VERSION = '1.003000';
+our $VERSION = '1.003002';
+$VERSION = eval $VERSION;
sub _choose_json_module {
return 'Cpanel::JSON::XS' if $INC{'Cpanel/JSON/XS.pm'};
}
our @EXPORT = qw(encode_json decode_json JSON);
-our @EXPORT_ALL = qw/is_bool/;
+my @EXPORT_ALL = qw(is_bool);
our @EXPORT_OK = qw(is_bool to_json from_json);
-our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_ALL ],
- legacy => [ @EXPORT, @EXPORT_OK],
- );
-
+our %EXPORT_TAGS = ( all => [ @EXPORT, @EXPORT_ALL ],
+ legacy => [ @EXPORT, @EXPORT_OK ],
+ );
sub JSON () { our $JSON_Class }
Scalar::Util::blessed($_[0])
and ($_[0]->isa('JSON::XS::Boolean')
+ or $_[0]->isa('Cpanel::JSON::XS::Boolean')
or $_[0]->isa('JSON::PP::Boolean'));
}
-# CopyPasta from JSON.pm version 2.90
+# (mostly) CopyPasta from JSON.pm version 2.90
+use Carp ();
sub from_json ($@) {
- if ( ref($_[0]) eq 'JSON' or $_[0] eq 'JSON' ) {
+ if ( ref($_[0]) =~ /^JSON/ or $_[0] =~ /^JSON/ ) {
Carp::croak "from_json should not be called as a method.";
}
- my $json = JSON->new;
+ my $json = JSON()->new;
if (@_ == 2 and ref $_[1] eq 'HASH') {
my $opt = $_[1];
sub to_json ($@) {
if (
- ref($_[0]) eq 'JSON'
- or (@_ > 2 and $_[0] eq 'JSON')
+ ref($_[0]) =~ /^JSON/
+ or (@_ > 2 and $_[0] =~ /^JSON/)
) {
Carp::croak "to_json should not be called as a method.";
}
- my $json = JSON->new;
+ my $json = JSON()->new;
if (@_ == 2 and ref $_[1] eq 'HASH') {
my $opt = $_[1];
$json->encode($_[0]);
}
-
-
-
1;
=head1 NAME
use JSON::MaybeXS qw(JSON); # JSON constant only
-To import all available sensible (encode_json, decode_json and
-is_bool) symbols, use C<:all>:
+To import all available sensible symbols (C<encode_json>, C<decode_json>, and
+C<is_bool>), use C<:all>:
use JSON::MaybeXS ':all';
-To import all symbols including those needed by legacy apps that use JSON::PP:
+To import all symbols including those needed by legacy apps that use L<JSON::PP>:
use JSON::MaybeXS ':legacy';
-This imports to_json and from_json symbols as well as everything in
-C< :all >. NOTE: This is to support legacy code that makes extensive
-use of to_json and from_json which you are not yet in a position to
+This imports the C<to_json> and C<from_json> symbols as well as everything in
+C<:all>. NOTE: This is to support legacy code that makes extensive
+use of C<to_json> and C<from_json> which you are not yet in a position to
refactor. DO NOT use this import tag in new code, in order to avoid
the crawling horrors of getting UTF8 support subtly wrong. See the
documentation for L<JSON> for further details.
=head2 to_json, from_json
-See L< JSON > for details. These are included to support legacy code
+See L<JSON> for details. These are included to support legacy code
B<only>.
=head2 JSON
=item * Karen Etheridge <ether@cpan.org>
+=item * Kieren Diment <diment@gmail.com>
+
=back
=head1 COPYRIGHT