11

Verify JSON using minimal schema

 4 years ago
source link: https://github.com/yusufnb/verify-json
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Verify JSON

Library to verify JSON structure easily using a lightweight JSON schema syntax

About

This project results from my need to verify JSON schema in a lightweight manner, without the need for an extensive definition and development code.

The schema syntax is minimalist and extremely easy to write.

Installation

npm install -s verify-json

const verify = require('verify-json')

import verify from 'verify-json';

Example

const { verify } = require("verify-json");

let json = {
  markers: [
    {
      name: "Rixos The Palm Dubai",
      location: [25.1212, 55.1535],
      favorite: true,
      color: "red",
    },
    {
      name: "Shangri-La Hotel",
      location: [25.2084, 55.2719],
      color: "blue",
    },
  ],
};

// <key>:<validator>
// <key>:!<validator> - uses ! for optional
// <key> - required non null attribute of any type
// Skip all the quotations
const schema = `{markers: [{
      name:string,
      location:[:lat,:long],
      favorite:!b,
      color
  }]
}`;

// customValidators are optional. See built-in validators.
const customValidators = {
  lat: (val) => val >= -90 && val <= 90,
  long: (val) => val >= -180 && val <= 180,
};

let result = verify(json, schema, customValidators);

console.log(result); // true

json.markers[0].location[0] = 1000;

try {
  verify(json, schema, customValidators);
} catch (error) {
  console.log("error", error); // json.markers.0.location.0: validation failed
}

Built-in Validators

Following validators are built in and can be used directly -

{
    string    : _.isString,
    s         : _.isString,      // alias for string
    number    : _.isNumber,
    n         : _.isNumber,      // alias for number
    boolean   : _.isBoolean,
    b         : _.isBoolean,     // alias for boolean
    integer   : _.isInteger,
    i         : _.isInteger,     // alias for integer
    func      : _.isFunction,
    f         : _.isFunction,    // alias for func
    an        : (v) => v.match(/^[a-zA-Z0-9]+$/), // alpha-numeric
}

Use as a mixin

Since lodash is a dependency, this method is also exposed as a lodash mixin. Once imported anywhere, you can simply use _.verify to access it.

_.verify(json, schema, customValidators)

License

MIT © Yusuf Bhabhrawala


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK