JsonValidationError class

A JsonValidationError describes one failure of a value against a schema: the place in the value, the place in the schema, the keyword that failed, and a message. JsonValidationResult.Errors returns them. The class is not related to JsonError, which reports the last error of a function.

Dim schema As Variant = Json.Parse("{""properties"":{""age"":{""type"":""integer"",""minimum"":0}}}")
Dim report As JsonValidationResult = Json.Validate(Json.Parse("{""age"":-5}"), schema)
Dim errs() As JsonValidationError = report.Errors()
Dim e As JsonValidationError = errs(0)
Debug.Print e.Keyword                                     ' minimum
Debug.Print e.InstancePointer                             ' /age
Debug.Print e.SchemaPointer                               ' /properties/age/minimum
Debug.Print e.Message                                     ' Number is below minimum.
Debug.Print e.ToString()                                  ' minimum /age - Number is below minimum.

Properties

InstancePointer

The place in the checked value. A String, read-only.

Syntax: text = error**.InstancePointer**

Returns the RFC 6901 JSON Pointer of the value that failed. The empty string is the value itself. Json.PointerGet finds the value with it.

Keyword

The keyword that failed. A String, read-only.

Syntax: text = error**.Keyword**

Returns the name of the keyword, such as type, required or minimum. Two failures have other names: false, for a schema that is False, and $schema, for a schema that is neither an object nor a Boolean. depth stands for evaluation that went deeper than MaxDepth.

Message

A description of the failure. A String, read-only.

Syntax: text = error**.Message**

Returns the message in English. Messages lists them.

SchemaPointer

The place in the schema. A String, read-only.

Syntax: text = error**.SchemaPointer**

Returns the path that the evaluation took to the keyword, written as a JSON Pointer, such as /properties/age/minimum. Where a $ref was followed, the path continues after /$ref, so it is a path of the evaluation, and not always a pointer into one document.

Dim sc As JsonSchema = Json.CompileSchema(Json.Parse("{""$ref"":""https://example.invalid/name#/$defs/short""}"))
sc.AddDocument "https://example.invalid/name", Json.Parse("{""$defs"":{""short"":{""type"":""string"",""maxLength"":3}}}")
Dim errs() As JsonValidationError = sc.Validate("abcd").Errors()
Debug.Print errs(0).SchemaPointer                         ' /$ref/maxLength

Methods

ToString

Returns the failure as one line of text.

Syntax: text = error**.ToString** ( ) As String

Returns the keyword, a space, the instance pointer (/ for the value itself), a space, a hyphen, a space and the message, as in minimum /age - Number is below minimum..

Messages

These are the messages, by keyword. A message in quotes holds the name or the number that the failure concerns.

Keyword Message
type Type is not ‘name’. for one type name, Type is not in the type list. for a list
const Value does not equal const.
enum Value is not in enum.
minLength String is shorter than minLength.
maxLength String is longer than maxLength.
pattern String does not match pattern.
format String does not match format ‘name’.
minimum Number is below minimum.
maximum Number is above maximum.
exclusiveMinimum Number is not above exclusiveMinimum.
exclusiveMaximum Number is not below exclusiveMaximum.
multipleOf Number is not a multiple of multipleOf.
minItems Array is shorter than minItems.
maxItems Array is longer than maxItems.
uniqueItems Array items are not unique.
contains Array does not contain enough matching items.
maxContains Array contains too many matching items.
minProperties Object has too few properties.
maxProperties Object has too many properties.
required Missing required property ‘name’.
dependentRequired Missing dependent property ‘name’.
anyOf Instance matches no anyOf schema.
oneOf Instance matches N oneOf schemas., where N is the number of schemas that matched: 0, or more than 1
not Instance matches the negated schema.
false Schema is false.
$ref Schema $ref is not in the local catalogue.
$schema Schema is not an object.
depth Maximum nesting depth exceeded.

A keyword that fails for a part of the value, such as items or properties, reports the failures of its subschema under their own keywords, with the pointer of the part.

See Also