1.0.1 • Public • Published


    Adapter to different JSON-schema (draft4) validators

    Build Status

    Supported 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);


    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.

    Add schema

    (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.

    Get schema

    (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 calling addSchema 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.

    Validators compatibility

    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 only full uris, some only short 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 only RegExp.

    • compile: validators that compile schemas into validating functions. Even if a validator doesn't compile schemas, you can use compile 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.

    Running tests

    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 --full
    ./test <validator>
    ./test <validator> --short

    Skipped tests are features in validators that are either not implemented or failing.




    npm i json-schema-consolidate

    DownloadsWeekly Downloads






    Last publish


    • avatar