JSON Schema Instance
MIT License
Dynamic Json Schema Instance
This package contains json-schema utility for instantiating models based on schema. This is a part of djv packages aimed to work with json-schema. In future (~1 year) all djv packages will be unified into single package with djv scope.
For node - package is not minimized
npm install djvi
For browser
<script src="djvi/djvi.js"></script>
Use environment
var jsonSchema = {"common":{"properties":{"type":{"enum":["common"]}},"required":["type"]}};
var env = new djvi();
env.addSchema('test', jsonSchema);
env.instance('test#/common');
// => { type: 'common' }
JSON Schema instantiator should generate minimal
object, valid to a given schema.
null: null
string: ''
boolean: false
number: 0
integer: 0
object: {}
array: []
env.instance('test#/common') !== env.instance('test#/common')
Primitives types with default values
{"type":"number","default":100}
// => 100
{"type": "null"}
// => null
{"type": ["integer", "string"]}
// => 0
{"type": "array"}
// => []
All of types
{ "allOf":[
{"type":"object","properties":{"title":{"type":"string"}},"required":["title"]},
{"type":"object","properties":{"amount":{"type":"number","default":1}},"required":["amount"]}
]}
// => {"title":"","amount":1}
Items keywords should instantiate an array with objects
{"minItems": 1}
// => [{}]
{"items":[{"type":"integer"},{"type":"string"}]}
// => [0, ""]
instantiate an object that corresponds to a schema
env.instance('test#/common');
// => { type: 'common' }
add a schema to djvi environment
env.addSchema('test', jsonSchema);
removes a schema or the whole structure from djvi environment
env.removeSchema('test');
resolves name by existing environment
env.resolve('test');
// => { name: 'test', schema: {} }, fn: ... }
exports the whole structure object from environment or by resolved name
env.export();
// => { test: { name: 'test', schema: {}, ... } }
imports all found structure objects to internal environment structure
env.import(config);
returns { types, fieldTypes, fieldValidate, fieldFormat }
generators that can be overridden for use cases
env.utils();
allOf
and other cases to not
schemaoneOf
complex example/generator