New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

json-validity

Package Overview
Dependencies
Maintainers
1
Versions
8
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

json-validity

Fast and simple JSON validator

latest
Source
npmnpm
Version
1.0.0
Version published
Weekly downloads
11
22.22%
Maintainers
1
Weekly downloads
 
Created
Source

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 }

  • 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

Keywords

json

FAQs

Package last updated on 26 Jan 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts