App-Kritika
view release on metacpan or search on metacpan
kritika.fatpack view on Meta::CPAN
JSON->new->allow_nonref->encode ("Hello, World!")
=> "Hello, World!"
=head2 allow_unknown
$json = $json->allow_unknown ([$enable])
$enabled = $json->get_allow_unknown
If C<$enable> is true (or missing), then C<encode> will I<not> throw an
exception when it encounters values it cannot represent in JSON (for
example, filehandles) but instead will encode a JSON C<null> value. Note
that blessed objects are not included here and are handled separately by
c<allow_nonref>.
If C<$enable> is false (the default), then C<encode> will throw an
exception when it encounters anything it cannot encode as JSON.
This option does not affect C<decode> in any way, and it is recommended to
leave it off unless you know your communications partner.
=head2 allow_blessed
$json = $json->allow_blessed([$enable])
$enabled = $json->get_allow_blessed
See L<OBJECT SERIALISATION> for details.
If C<$enable> is true (or missing), then the C<encode> method will not
barf when it encounters a blessed reference that it cannot convert
otherwise. Instead, a JSON C<null> value is encoded instead of the object.
If C<$enable> is false (the default), then C<encode> will throw an
exception when it encounters a blessed object that it cannot convert
otherwise.
This setting has no effect on C<decode>.
=head2 convert_blessed
$json = $json->convert_blessed([$enable])
$enabled = $json->get_convert_blessed
kritika.fatpack view on Meta::CPAN
When C<$coderef> is omitted or undefined, any existing callback will
be removed and C<decode> will not change the deserialised hash in any
way.
Example, convert all JSON objects into the integer 5:
my $js = JSON->new->filter_json_object (sub { 5 });
# returns [5]
$js->decode ('[{}]'); # the given subroutine takes a hash reference.
# throw an exception because allow_nonref is not enabled
# so a lone 5 is not allowed.
$js->decode ('{"a":1, "b":2}');
=head2 filter_json_single_key_object
$json = $json->filter_json_single_key_object($key [=> $coderef])
Works remotely similar to C<filter_json_object>, but is only called for
JSON objects having a single key named C<$key>.
kritika.fatpack view on Meta::CPAN
=head2 max_size
$json = $json->max_size([$maximum_string_size])
$max_size = $json->get_max_size
Set the maximum length a JSON text may have (in bytes) where decoding is
being attempted. The default is C<0>, meaning no limit. When C<decode>
is called on a string that is longer then this many bytes, it will not
attempt to decode the string but throw an exception. This setting has no
effect on C<encode> (yet).
If no argument is given, the limit check will be deactivated (same as when
C<0> is specified).
=head2 encode
$json_text = $json->encode($perl_scalar)
Converts the given Perl value or data structure to its JSON
kritika.fatpack view on Meta::CPAN
the same backend), but this incurs a runtime overhead and is only rarely useful,
e.g. when you want to compare some JSON text against another for equality.
=item array references
Perl array references become JSON arrays.
=item other references
Other unblessed references are generally not allowed and will cause an
exception to be thrown, except for references to the integers C<0> and
C<1>, which get turned into C<false> and C<true> atoms in JSON. You can
also use C<JSON::false> and C<JSON::true> to improve readability.
encode_json [\0,JSON::true] # yields [false,true]
=item JSON::true, JSON::false, JSON::null
These special values become JSON true and JSON false values,
respectively. You can also use C<\1> and C<\0> directly if you want.
kritika.fatpack view on Meta::CPAN
$uri->as_string
}
=item 2. C<allow_blessed> is enabled.
The object will be serialised as a JSON null value.
=item 3. none of the above
If none of the settings are enabled or the respective methods are missing,
this module throws an exception.
=back
=head1 ENCODING/CODESET FLAG NOTES
This section is taken from JSON::XS.
The interested reader might have seen a number of flags that signify
encodings or codesets - C<utf8>, C<latin1> and C<ascii>. There seems to be
some confusion on what these do, so here is a short comparison:
t/kritika.t view on Meta::CPAN
ua => $ua
);
_touch_file( "$tempdir/file.txt", 'hello there' );
my $issues = $kritika->validate("$tempdir/file.txt");
is_deeply $issues, [ { line_no => 1, message => 'Oops' } ];
};
subtest 'validate: throws on internal error' => sub {
my $tempdir = tempdir();
my $ua = _mock_ua( post =>
sub { { success => 0, status => 599, content => 'Cant connect' } } );
my $kritika = _build_kritika(
base_url => 'http://localhost',
token => 'deadbeef',
root => $tempdir,
branch => 'master',
revision => 'deadbeef',
ua => $ua
);
_touch_file( "$tempdir/file.txt", 'hello there' );
like exception { $kritika->validate("$tempdir/file.txt") },
qr/Cant connect/;
};
subtest 'validate: throws on remote error' => sub {
my $tempdir = tempdir();
my $ua = _mock_ua(
post => sub { { success => 0, status => 404, reason => 'Not found' } }
);
my $kritika = _build_kritika(
base_url => 'http://localhost',
token => 'deadbeef',
root => $tempdir,
branch => 'master',
( run in 0.236 second using v1.01-cache-2.11-cpan-496ff517765 )