Adapter to different JSON-schema (draft4) validators
You must install the validator(s) you use separately.
See Validators compatibility and json-schema-benchmark.
npm install json-schema-consolidate
npm install <validator>
var consolidate = require('json-schema-consolidate');
var Validator = consolidate('<validator>');
var validator = new Validator(options); // or Validator(options);
or
var consolidate = require('json-schema-consolidate');
var validator = consolidate('<validator>', options);
var result = validator.validate(schema, json); // { valid: true/false, errors: [...] }
schema
can be a string, in which case it will be JSON.parse'd.
If you need to validate with the previously added schema, you can either use getSchema
to retrieve it or pass { $ref: '<id>' }
as the schema.
If the referenced schema is missing it is an error (for all validators - tv4 is corrected in this case).
For compiling validators, this method will cache compiled schemas using serialized schema as a key (json-stable-stringify is used).
(create validating function)
var validate = validator.compile(schema);
var result = validate(json); // { valid: true/false, errors: [...] }
For interpreting validators this method will simply return a closure that can be used to validate json, but there will be no performance gain.
(that can be referred to in other schemas)
validator.addSchema(schema, id);
If id
is not passed, schema.id
will be used
schema
can be array of schemas, in which case the second parameter is not used.
(previously added)
var schema = validator.getSchema(id);
These options are available in all supported validators:
-
allErrors
- continue validation after errors and return all validation errors. -
schemas
- include some schemas, same result as callingaddSchema
method. -
formats
- define additional formats, most validators support RegExp and functions. Format function should return validation success as boolean for ALL validators used with json-schema-consolidate.
Validator specific options can also be passed.
validator | meta | ref | allErrors | formats | compile | fails |
---|---|---|---|---|---|---|
ajv | ✓ | ✓ | ✓ | ✓ | ✓ | -/1 |
is-my-json-valid | ✓ | short | - | ✓ | ✓ | 3/9 |
jayschema | ✓ | ✓ | - | ✓ | - | 1/5 |
jjv | ✓ | ✓ | - | ✓ | - | 3/4 |
jsck | ✓ | ✓ | - | - | ✓ | 3/11 |
jsen | ✓ | - | - | ✓ | ✓ | 7/7 |
jsonschema | - | full | ✓ | - | - | 4/3 |
schemasaurus | - | - | - | RegExp | ✓ | 8/10 |
skeemas | ✓ | full | - | - | - | 3/1 |
themis | ✓ | ✓ | - | ✓ | ✓ | 3/8 |
tv4 | - | ✓ | ✓ | ✓ | - | 2/11 |
z-schema | ✓ | ✓ | ✓ | ✓ | ✓ | -/6 |
-
meta
: validator can correctly validate schema against meta-schema. Some validators validate valid schemas as invalid or just throw error in this test. -
ref
: support for referencing schemas in other files. Some validators support onlyfull
uris, some onlyshort
uris and some support both (✓). -
allErrors
: if supported, the validator will stop after the first error unless this options is set to true. -
formats
: most validators support functions and RegExp (some only with this package) as custom formats (✓). Some support onlyRegExp
. -
compile
: validators that compile schemas into validating functions. Even if a validator doesn't compile schemas, you can usecompile
method - it will return a function that will validate using the passed schema. -
fails
: the number of tests that fails. The first number - tests in json-schema-consolidate interface tests, the second - the tests in the official json-schema draft4 test suite.
To run tests you need to install json-schema-tests and all validators:
npm install
npm install -g coffee-script
npm install -g json-schema-tests
Then you can run tests with ./test
script:
./test
./test --full
./test <validator>
./test <validator> --short
Skipped tests are features in validators that are either not implemented or failing.