Module-Generic
view release on metacpan or search on metacpan
lib/Module/Generic/JSON.pm view on Meta::CPAN
instead of:
my $j = Module::Generic::JSON->new;
$j = $j->utf8->pretty->canonical->relaxed->allow_nonref;
=item * No fatal exception that would kill your process inadvertently.
This is important in a web application where you do not want some module killing your process, but rather you want the exception to be handled gracefully.
Thus, instead of having to do:
local $@;
my $ref = eval{ $j->decode( $payload ) };
if( $@ )
{
# Like returning a 500 or maybe 400 HTTP error
bailout_gracefully( $@ );
}
you can simply do:
my $ref = $j->decode( $payload ) || bailout_gracefully( $j->error );
=item * Upon error, it returns an L<exception object|Module::Generic::Exception>
=item * All methods calls are passed through to L<JSON>, and any exception is caught, and handled properly for you.
=back
For L<class functions|/"CLASS FUNCTIONS"> too, you can execute them safely and catch error, if any, by calling C<< Module::Generic::JSON->error >>, so for example:
decode_json( $some_data ) || die( Module::Generic::JSON->error );
=head1 CONSTRUCTOR
=head2 new
This takes an hash or hash reference of options and returns a new L<Module::Generic::JSON> object. The options must be supported by L<JSON>. On error, sets an L<error object|Module::Generic::Exception> and returns C<undef> in scalar context or an emp...
my $j = Module::Generic::JSON->new( utf8 => 1, pretty => 1 ) ||
die( Module::Generic::JSON->error );
=head1 METHODS
See the documentation for the module L<JSON> for more information, but below are the known methods supported by L<JSON>
=head2 allow_blessed
=head2 allow_nonref
=head2 allow_tags
=head2 allow_unknown
=head2 ascii
=head2 backend
=head2 boolean
=head2 boolean_values
=head2 canonical
=head2 convert_blessed
=head2 decode
Decodes a JSON string and returns the resulting Perl data structure. On error, sets an L<error object|Module::Generic::Exception> and returns C<undef> in scalar context or an empty list in list context:
my $data = $j->decode( '{"a":1}' ) || die( $j->error );
=head2 decode_prefix
=head2 encode
Encodes a Perl data structure into a JSON string. On error, sets an L<error object|Module::Generic::Exception> and returns C<undef> in scalar context or an empty list in list context:
my $json_str = $j->encode( { a => 1 } ) || die( $j->error );
=head2 filter_json_object
=head2 filter_json_single_key_object
=head2 indent
=head2 is_pp
=head2 is_xs
=head2 latin1
=head2 max_depth
=head2 max_size
=head2 pretty
=head2 property
=head2 relaxed
=head2 space_after
=head2 space_before
=head2 utf8
=head1 CLASS FUNCTIONS
=head2 decode_json
Decodes a C<JSON> string and returns the resulting Perl data structure. On error, sets an L<error object|Module::Generic::Exception> and returns C<undef> in scalar context or an empty list in list context:
my $data = decode_json( '{"a":1}' ) || die( Module::Generic::JSON->error );
=head2 encode_json
Encodes a Perl data structure into a C<JSON> string. On error, sets an L<error object|Module::Generic::Exception> and returns C<undef> in scalar context or an empty list in list context:
my $json_str = encode_json( { a => 1 } ) || die( Module::Generic::JSON->error );
( run in 0.815 second using v1.01-cache-2.11-cpan-99c4e6809bf )