Skip to content
This repository has been archived by the owner on Jan 30, 2024. It is now read-only.

nitely/tiny-json-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tiny JSON validator

Build Status npm

A Node.js lib that has less lines than this readme™.

It supports a tiny subset of the json schema specs. The main goal of this project is to provide a nice and easy to follow implementation of a json validator. You may fork it and extend it as you please.

Release versioning follows SemVer.

Installation

$ npm install tiny-json-validator

It is supported in all versions of Node.js +4.2 without any flags.

Example

"use strict";

let validator = require('tiny-json-validator');


let book_schema = {
    type: 'object',
    required: true,
    properties: {
        title: {
            type: 'string',
            required: true
        },
        author: {
            type: 'object',
            required: true,
            properties: {
                name: {
                    type: 'string',
                    required: true
                },
                age: {
                    type: 'integer',
                    required: true
                },
                city: {
                    type: 'string'
                }
            }
        },
        related_titles: {
            type: 'array',
            required: true,
            items: {
                type: 'string'
            }
        }
    }
};

let data = {
    title: 'A Game of Thrones',
    author: {
        name: 'George R. R. Marti'
    },
    related_titles: [1, 2, 'A Song of Ice and Fire'],
    extra: 'this will get removed'
};

let res = validator(book_schema, data);

res.isValid
// false

res.errors
// {author.age: "is required", related_titles.0: 'type must be string', related_titles.1: 'type must be string'}

res.data
// {title: 'A Game of Thrones', author: {name: 'George R. R. Marti'}, related_titles: ['A Song of Ice and Fire']}

Running tests

$ npm run test

Changelog

changelog

License

MIT