Fast and simple JSON validator
npm install json-validity

``
const {isValid} = require('json-validity')
const songSchema = {
published: 'number',
style: [ 'rock', 'jazz' ],
title: 'string',
}
const song = {
published: 1975,
style: 'rock',
title: 'In my time of dying',
}
isValid({input: song, schema: songSchema})
// => true
`
- yarn add json-validity
- input - object to be validated
- schema - schema object with rules
> { foo: val => val.length > 2 }
- Valid object - { foo: [ 1, 2, 3 ] }
> { foo: 'string' }
- Valid object - { foo: 'bar' }
> { foo: 'number' }
- Valid object - { foo: 1 }
> { foo: 'boolean' }
- Valid object - { foo: { bar: 'baz' } }
> { foo: /[a-z]{1,3}/ }
- Valid object - { foo: 'bar' }
> { foo: [ 'bar', 'baz', 1, null ] }
- Valid object - { foo: 1 }
- Valid object - { foo: 'baz' }
- Valid object - { foo: null }
Note that you can also set single enum value expectation, such as { foo: ['bar'] }
We can nest schemas such as:
``
const fooSchema = {bar: 'string'}
const schema = {
foo: fooSchema,
bar: 'number'
}
const input = {
foo: {bar: 'You shook me'},
bar: 1
}
isValid({input, schema})
// => true
> { foo: 'array' }
- Valid object - { foo: [] }
> { foo: ['string'] }
- Valid object - { foo: [ 'bar', 'baz' ] }
Property is array of elements, with each element is validated against the single schema object.
Note, that if the schema is { foo: 'string' }, the object {foo: 'bar',baz: 1} is valid.
In other words, we can have aditional properties, without breaking the validation.
> songSchema - { title: 'string' }
> { foo: [ songSchema ] }
- Valid object - { foo: [ { title: 'bar' } ] }
`
const basicSchema = {
a: ['string']
}
const schema = {
b: [basicSchema],
c: {
d: {
e: 'boolean'
},
f: 'array'
},
g: ['foo','bar','baz']
}
const input = {
b: [
{
a: ['led', 'zeppelin']
}
],
c: {
d: {
e: true
},
f: []
},
g: 'foo'
}
isValid({input,schema}) // => true
``