Mojo::JSON - Minimalistic JSON
use Mojo::JSON qw(decode_json encode_json); # Encode and decode JSON (die on errors) my $bytes = encode_json({foo => [1, 2], bar => 'hello!', baz => \1}); my $hash = decode_json($bytes); # Handle errors my $json = Mojo::JSON->new; if (defined(my $hash = $json->decode($bytes))) { say $hash->{message} } else { say 'Error: ', $json->error } # Ignore errors use Mojo::JSON 'j'; my $bytes = j({foo => [1, 2], bar => 'hello!', baz => \1}); my $hash = j($bytes);
Mojo::JSON is a minimalistic and possibly the fastest pure-Perl implementation of RFC 4627.
It supports normal Perl data types like Scalar, Array reference, Hash reference and will try to call the TO_JSON method on blessed references, or stringify them if it doesn't exist. Differentiating between strings and numbers in Perl is hard, depending on how it has been used, a Scalar can be both at the same time. Since numeric comparisons on strings are very unlikely to happen intentionally, the numeric value always gets priority, so any Scalar that has been used in numeric context is considered a number.
Scalar
Array
Hash
TO_JSON
[1, -2, 3] -> [1, -2, 3] {"foo": "bar"} -> {foo => 'bar'}
Literal names will be translated to and from Mojo::JSON constants or a similar native Perl value.
true -> Mojo::JSON->true false -> Mojo::JSON->false null -> undef
In addition Scalar references will be used to generate booleans, based on if their values are true or false.
\1 -> true \0 -> false
Decoding UTF-16 (LE/BE) and UTF-32 (LE/BE) will be handled transparently, encoding will only generate UTF-8. The two Unicode whitespace characters u2028 and u2029 will always be escaped to make JSONP easier.
u2028
u2029
Mojo::JSON implements the following functions, which can be imported individually.
my $array = decode_json($bytes); my $hash = decode_json($bytes);
Decode JSON to Perl data structure and die if decoding fails.
my $bytes = encode_json([1, 2, 3]); my $bytes = encode_json({foo => 'bar'});
Encode Perl data structure to JSON.
my $bytes = j([1, 2, 3]); my $bytes = j({foo => 'bar'}); my $array = j($bytes); my $hash = j($bytes);
Encode Perl data structure or decode JSON and return undef if decoding fails.
undef
Mojo::JSON implements the following attributes.
my $err = $json->error; $json = $json->error('Parser error');
Parser errors.
Mojo::JSON inherits all methods from Mojo::Base and implements the following new ones.
my $array = $json->decode($bytes); my $hash = $json->decode($bytes);
Decode JSON to Perl data structure and return undef if decoding fails.
my $bytes = $json->encode([1, 2, 3]); my $bytes = $json->encode({foo => 'bar'});
my $false = Mojo::JSON->false; my $false = $json->false;
False value, used because Perl has no native equivalent.
my $true = Mojo::JSON->true; my $true = $json->true;
True value, used because Perl has no native equivalent.
Mojolicious, Mojolicious::Guides, http://mojolicio.us.
To install Mojolicious, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Mojolicious
CPAN shell
perl -MCPAN -e shell install Mojolicious
For more information on module installation, please visit the detailed CPAN module installation guide.