1.0.0 • Published 6 years ago

json-validity v1.0.0

Weekly downloads
9
License
ISC
Repository
github
Last release
6 years ago

Build Status codecov

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

Screen

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 }

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' }

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 }

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
1.0.0

6 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.0

7 years ago