json-validity
v1.0.0
Published
Fast and simple JSON validator
Downloads
6
Maintainers
Readme
Json validity
Fast JSON validator build for simplicity
Example use
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
Benchmark
Installation
- yarn add json-validity
API
isValid({ input: object, schema: object}): boolean
input - object to be validated
schema - schema object with rules
Valid schema declarations
Function
{ foo: val => val.length > 2 }
- Valid object - { foo: [ 1, 2, 3 ] }
String
{ foo: 'string' }
- Valid object - { foo: 'bar' }
Number
{ foo: 'number' }
- Valid object - { foo: 1 }
Boolean
{ foo: 'boolean' }
- Valid object - { foo: { bar: 'baz' } }
Regular expression
{ foo: /[a-z]{1,3}/ }
- Valid object - { foo: 'bar' }
Enumerable
{ 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'] }
Schema
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
Array
{ foo: 'array' }
- Valid object - { foo: [] }
Array of specific type
{ foo: ['string'] }
- Valid object - { foo: [ 'bar', 'baz' ] }
Array of schema
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' } ] }
Detailed example
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