NAME
Mojo::JSON - Minimalistic JSON
SYNOPSIS
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;
my $hash = $json->decode($bytes);
my $err = $json->error;
say $err ? "Error: $err" : $hash->{message};
DESCRIPTION
Mojo::JSON is a minimalistic and possibly the fastest pure-Perl implementation of RFC 7159.
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.
[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
The two Unicode whitespace characters u2028
and u2029
will always be escaped to make JSONP easier.
FUNCTIONS
Mojo::JSON implements the following functions, which can be imported individually.
decode_json
my $value = decode_json($bytes);
Decode JSON to Perl value and die if decoding fails.
encode_json
my $bytes = encode_json({foo => 'bar'});
Encode Perl value to JSON.
j
my $bytes = j([1, 2, 3]);
my $bytes = j({foo => 'bar'});
my $value = j($bytes);
Encode Perl data structure (which may only be an array reference or hash reference) or decode JSON, an undef
return value indicates a bare null
or that decoding failed.
ATTRIBUTES
Mojo::JSON implements the following attributes.
error
my $err = $json->error;
$json = $json->error('Parser error');
Parser error.
METHODS
Mojo::JSON inherits all methods from Mojo::Base and implements the following new ones.
decode
my $value = $json->decode($bytes);
Decode JSON to Perl value and set "error" if decoding failed.
encode
my $bytes = $json->encode({foo => 'bar'});
Encode Perl value to JSON.
false
my $false = Mojo::JSON->false;
my $false = $json->false;
False value, used because Perl has no native equivalent.
true
my $true = Mojo::JSON->true;
my $true = $json->true;
True value, used because Perl has no native equivalent.