NAME
JSON::Schema::Modern::Result - Contains the result of a JSON Schema evaluation
VERSION
version 0.533
SYNOPSIS
use JSON::Schema::Modern;
my $js = JSON::Schema::Modern->new;
my $result = $js->evaluate($data, $schema);
my @errors = $result->errors;
my $result_data_encoded = encode_json($result); # calls TO_JSON
# use in numeric and boolean context
say sprintf('got %d %ss', $result, ($result ? 'annotation' : 'error'));
# use in string context
say 'full results: ', $result;
# combine two results into one:
my $overall_result = $result1 & $result2;
DESCRIPTION
This object holds the complete results of evaluating a data payload against a JSON Schema using JSON::Schema::Modern.
OVERLOADS
The object contains a boolean overload, which evaluates to the value of "valid", so you can use the result of "evaluate" in JSON::Schema::Modern in boolean context.
The object also contains a bitwise AND overload (&
), for combining two results into one (the result is valid iff both inputs are valid; annotations and errors from the second argument are appended to those of the first).
ATTRIBUTES
valid
A boolean. Indicates whether validation was successful or failed.
errors
Returns an array of JSON::Schema::Modern::Error objects.
annotations
Returns an array of JSON::Schema::Modern::Annotation objects.
output_format
One of: flag
, basic
, strict_basic
, detailed
, verbose
, terse
. Defaults to basic
.
flag
returns just the result of the evaluation: either{"valid": true}
or{"valid": false}
.basic
adds the list oferrors
orannotations
to the boolean evaluation result.instance_location
andkeyword_location
are always included, as JSON pointers, describing the path to the evaluation location;absolute_keyword_location
is added (as a resolved URI) whenever it is known and different fromkeyword_location
.strict_basic
is likebasic
but follows the draft-2019-09 specification precisely, includingreplicating an error fixed in the next draft, in that
instance_location
andkeyword_location
values are provided as fragment-only URI references rather than JSON pointers.terse
is not described in any specification; it is likebasic
, but omits some redundanterrors (for example the one for the
allOf
keyword that is added when any of the subschemas underallOf
failed evaluation).
METHODS
format
Returns a data structure suitable for serialization; requires one argument specifying the output format to use, which corresponds to the formats documented in https://json-schema.org/draft/2019-09/json-schema-core.html#rfc.section.10.4. The only supported formats at this time are flag
, basic
, strict_basic
, and terse
.
TO_JSON
Calls "format" with the style configured in "output_format".
count
Returns the number of annotations when the result is true, or the number of errors when the result is false.
combine
When provided with another result object, returns a new object with the combination of all results. See &
at "OVERLOADS".
SUPPORT
You can also find me on the JSON Schema Slack server and OpenAPI Slack server, which are also great resources for finding help.
SUPPORT
Bugs may be submitted through https://github.com/karenetheridge/JSON-Schema-Modern/issues.
I am also usually active on irc, as 'ether' at irc.perl.org
and irc.libera.chat
.
AUTHOR
Karen Etheridge <ether@cpan.org>
COPYRIGHT AND LICENCE
This software is copyright (c) 2020 by Karen Etheridge.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.