json-schema-default-instance
![Build Status](https://travis-ci.org/dancasey/json-schema-default-instance.svg?branch=master)
Creates an object as an instance of the given schema using its default
properties.
- Accepts multiple schemas, referenced by
id
. - Resolves
$ref
and allOf
. - Will instantiate all properties with a given
default
, unless - If
requiredOnly = true
, ignores properties that are not listed in the required
array (see example below).
Usage
Install with npm install --save json-schema-default-instance
See test/test.js
for an example with $ref
and allOf
.
Simple example below:
const {Instantiator} = require('json-schema-default-instance');
const mySchemas = [
{
"$schema": "http://json-schema.org/draft-04/schema#",
"id": "theSchemaId",
"type": "object",
"required": [
"firstName",
"lastName"
],
"properties": {
"firstName": {
"type": "string",
"default": "Foo"
},
"lastName": {
"type": "string",
"default": "Bar"
},
"optionalProperty": {
"type": "string",
"default": "Hello"
}
}
}
]
let ins = new Instantiator(mySchemas);
let myDefaultInstance = ins.instantiate('theSchemaId');
console.log(myDefaultInstance);
ins.requiredOnly = true;
let myRequiredInstance = ins.instantiate('theSchemaId');
console.log(myRequiredInstance);
Notes
Relies heavily on Ajv
for caching and lookup by ref, even though no validation is done here.
Ajv: Another JSON Schema Validator
Ajv
does have its own useDefaults
option which can be used instead of this package,
but it does not support default
keywords in subschemas or allOf
.
If you don't need allOf
, just use Ajv
directly (see Ajv assigning-defaults and related discussion).
Need help understanding JSON Schema? I would recommend the Space Telescope Science Institute's Understanding JSON Schema
License
Public Domain