CPANPLUS
view release on metacpan or search on metacpan
inc/bundle/JSON/PP.pm view on Meta::CPAN
sub max_size {
my $max = defined $_[1] ? $_[1] : 0;
$_[0]->{max_size} = $max;
$_[0];
}
sub get_max_size { $_[0]->{max_size}; }
sub boolean_values {
my $self = shift;
if (@_) {
my ($false, $true) = @_;
$self->{false} = $false;
$self->{true} = $true;
if (CORE_BOOL) {
BEGIN { CORE_BOOL and warnings->unimport(qw(experimental::builtin)) }
if (builtin::is_bool($true) && builtin::is_bool($false) && $true && !$false) {
$self->{core_bools} = !!1;
}
inc/bundle/JSON/PP.pm view on Meta::CPAN
sub unblessed_bool {
my $self = shift;
return $self->core_bools(@_);
}
sub get_unblessed_bool {
my $self = shift;
return $self->get_core_bools(@_);
}
sub get_boolean_values {
my $self = shift;
if (exists $self->{true} and exists $self->{false}) {
return @$self{qw/false true/};
}
return;
}
sub filter_json_object {
if (defined $_[1] and ref $_[1] eq 'CODE') {
$_[0]->{cb_object} = $_[1];
inc/bundle/JSON/PP.pm view on Meta::CPAN
the object's class. If found, it will be used to serialise the object into
a nonstandard tagged JSON value (that JSON decoders cannot decode).
It also causes C<decode> to parse such tagged JSON values and deserialise
them via a call to the C<THAW> method.
If C<$enable> is false (the default), then C<encode> will not consider
this type of conversion, and tagged JSON values will cause a parse error
in C<decode>, as if tags were not part of the grammar.
=head2 boolean_values
$json->boolean_values([$false, $true])
($false, $true) = $json->get_boolean_values
By default, JSON booleans will be decoded as overloaded
C<$JSON::PP::false> and C<$JSON::PP::true> objects.
With this method you can specify your own boolean values for decoding -
on decode, JSON C<false> will be decoded as a copy of C<$false>, and JSON
C<true> will be decoded as C<$true> ("copy" here is the same thing as
assigning a value to another variable, i.e. C<$copy = $false>).
This is useful when you want to pass a decoded data structure directly
to other serialisers like YAML, Data::MessagePack and so on.
Note that this works only when you C<decode>. You can set incompatible
boolean objects (like L<boolean>), but when you C<encode> a data structure
with such boolean objects, you still need to enable C<convert_blessed>
(and add a C<TO_JSON> method if necessary).
Calling this method without any arguments will reset the booleans
to their default values.
C<get_boolean_values> will return both C<$false> and C<$true> values, or
the empty list when they are set to the default.
=head2 core_bools
$json->core_bools([$enable]);
If C<$enable> is true (or missing), then C<decode>, will produce standard
perl boolean values. Equivalent to calling:
$json->boolean_values(!!1, !!0)
C<get_core_bools> will return true if this has been set. On perl 5.36, it will
also return true if the boolean values have been set to perl's core booleans
using the C<boolean_values> method.
The methods C<unblessed_bool> and C<get_unblessed_bool> are provided as aliases
for compatibility with L<Cpanel::JSON::XS>.
=head2 filter_json_object
$json = $json->filter_json_object([$coderef])
When C<$coderef> is specified, it will be called from C<decode> each
time it decodes a JSON object. The only argument is a reference to
( run in 0.565 second using v1.01-cache-2.11-cpan-9ff20fc0ed8 )