Polyglottal JSON Schema Validator (Polyglottal Ajv)
Command line interface for ajv that utilizes any-json to provide validation against many data formats. pajv
can validate: CSON, Hjson, JSON, JSON5, TOML, and YAML files using JSON Schema. pajv is a fork of ajv-cli.
Contents
Installation
npm install -g pajv
Help
pajv help
pajv help validate
pajv help test
Validate data
This command validates data files against JSON-schema
pajv validate -s test/schema.json -d test/valid_data.json
pajv -s test/schema.json -d test/valid_data.json
You can omit validate
command name.
Parameters
-s
- file name of JSON-schema
Only one schema can be passed in this parameter
-d
- JSON data
Multiple data files can be passed, as in -r
parameter:
pajv -s test/schema.json -d "test/valid*.json"
If some file is invalid exit code will be 1.
-r
- referenced schemas
The schema in -s
parameter can reference any of these schemas with $ref
keyword.
Multiple schemas can be passed both by using this parameter mupltiple times and with glob patterns. Glob pattern should be quoted and extensions cannot be omitted.
-m
- meta-schemas
Schemas can use any of these schemas as a meta-schema (that is the schema used in $schema
keyword - it is used to validate the schema itself).
Multiple meta-schemas can be passed, as in -r
parameter.
-c
- custom keywords/formats definitions
You can pass module(s) that define custom keywords/formats. The modules should export a function that accepts Ajv instance as a parameter. The file name should start with ".", it will be resolved relative to the current folder. The package name can also be passed - it will be used in require as is.
For example, you can use -c ajv-keywords
to add all keywords from ajv-keywords package or -c ajv-keywords/keywords/typeof
to add only typeof keyword.
Options
-
--errors=
: error reporting format. Possible values:
js
(default): JavaScript objectjson
: JSON with indentation and line-breaksline
: JSON without indentaion/line-breaks (for easy parsing)text
: human readable error messages with data paths
-
--changes=
: detect changes in data after validation.
Data can be modifyed with Ajv options --remove-additional
, --use-defaults
and --coerce-types
).
The changes are reported in JSON-patch format (RFC6902).
Possible values are js
(default), json
and line
(see --errors
option).
Test validation result
This command asserts that the result of the validation is as expected.
pajv test -s test/schema.json -d test/valid_data.json --valid
pajv test -s test/schema.json -d test/invalid_data.json --invalid
If the option --valid
(--invalid
) is used for the test
to pass (exit code 0) the data file(s) should be valid (invalid).
This command supports the same options and parameters as validate with the exception of --changes
.
Ajv options
You can pass the following Ajv options:
Option | Description |
---|
--data | use $data references |
--all-errors | collect all errors |
--unknown-formats= | handling of unknown formats |
--verbose | include schema and data in errors |
--json-pointers | report data paths in errors using JSON-pointers |
--unique-items=false | do not validate uniqueItems keyword |
--unicode=false | count unicode pairs as 2 characters |
--format=full | format mode |
--schema-id= | keyword(s) to use as schema ID |
--extend-refs= | validation of other keywords when $ref is present in the schema |
--missing-refs= | handle missing referenced schemas (true/ignore/fail) |
--inline-refs= | referenced schemas compilation mode (true/false/<number>) |
--remove-additional | remove additional properties (true/all/failing) |
--use-defaults | replace missing properties/items with the values from default keyword |
--coerce-types | change type of data to match type keyword |
--multiple-of-precision | precision of multipleOf, pass integer number |
--error-data-path=property | data path in errors |
--messages=false | do not include text messages in errors |
Options can be passed in either dash-case and camelCase.
See Ajv Options for more information.
Version History
See https://github.com/json-schema-everywhere/pajv/releases
Licence
MIT