"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/is-my-json-valid/README.md" (17 Oct 2016, 4223 Bytes) of archive /windows/misc/atom-windows.zip:

As a special service "Fossies" has tried to format the requested source page into HTML format (assuming markdown format). Alternatively you can here view or download the uninterpreted source code file. A member file download can also be achieved by clicking within a package contents listing on the according byte size field.


A JSONSchema validator that uses code generation to be extremely fast

npm install is-my-json-valid

It passes the entire JSONSchema v4 test suite except for remoteRefs and maxLength/minLength when using unicode surrogate pairs.

build status


Simply pass a schema to compile it

``` js var validator = require(‘is-my-json-valid’)

var validate = validator({ required: true, type: ‘object’, properties: { hello: { required: true, type: ‘string’ } } })

console.log(‘should be valid’, validate({hello: ‘world’})) console.log(‘should not be valid’, validate({}))

// get the last list of errors by checking validate.errors // the following will print [{field: ‘data.hello’, message: ‘is required’}] console.log(validate.errors) ```

You can also pass the schema as a string

js var validate = validator('{"type": ... }')

Optionally you can use the require submodule to load a schema from __dirname

js var validator = require('is-my-json-valid/require') var validate = validator('my-schema.json')

Custom formats

is-my-json-valid supports the formats specified in JSON schema v4 (such as date-time). If you want to add your own custom formats pass them as the formats options to the validator

``` js var validate = validator({ type: ‘string’, required: true, format: ‘only-a’ }, { formats: { ‘only-a’: /^a+$/ } })

console.log(validate(‘aa’)) // true console.log(validate(‘ab’)) // false ```

External schemas

You can pass in external schemas that you reference using the $ref attribute as the schemas option

``` js var ext = { required: true, type: ‘string’ }

var schema = { $ref: ‘#ext’ // references another schema called ext }

// pass the external schemas as an option var validate = validator(schema, {schemas: {ext: ext}})

validate(‘hello’) // returns true validate(42) // return false ```

Filtering away additional properties

is-my-json-valid supports filtering away properties not in the schema

``` js var filter = validator.filter({ required: true, type: ‘object’, properties: { hello: {type: ‘string’, required: true} }, additionalProperties: false })

var doc = {hello: ‘world’, notInSchema: true} console.log(filter(doc)) // {hello: ‘world’} ```

Verbose mode outputs the value on errors

is-my-json-valid outputs the value causing an error when verbose is set to true

``` js var validate = validator({ required: true, type: ‘object’, properties: { hello: { required: true, type: ‘string’ } } }, { verbose: true })

validate({hello: 100}); console.log(validate.errors) // {field: ‘data.hello’, message: ‘is the wrong type’, value: 100, type: ‘string’} ```

Greedy mode tries to validate as much as possible

By default is-my-json-valid bails on first validation error but when greedy is set to true it tries to validate as much as possible:

``` js var validate = validator({ type: ‘object’, properties: { x: { type: ‘number’ } }, required: [‘x’, ‘y’] }, { greedy: true });

validate({x: ‘string’}); console.log(validate.errors) // [{field: ‘data.y’, message: ‘is required’}, // {field: ‘data.x’, message: ‘is the wrong type’}] ```


is-my-json-valid uses code generation to turn your JSON schema into basic javascript code that is easily optimizeable by v8.

At the time of writing, is-my-json-valid is the fastest validator when running

If you know any other relevant benchmarks open a PR and I’ll add them.