schema2class
v2.5.5
Published
Parse JSON schema to class
Downloads
32
Maintainers
Readme
Schema to Class
Parse JSON schema to class, and you can 'new' your data easily.
This is also an ES3 edition for IE Browser.
Import
ES Module
import schema2class from 'schema2class';
Typescript
import schema2class = require('schema2class');
CommonJS
const schema2class = require('schema2class'); // or var schema2class = require('schema2class/es3');
Broswer
<!--[if IE]><script src="schema2class/es3.js"><![endif]--> <script src="schema2class/index.js"></script> <!--[if IE]></script><![endif]--> <script> /// <reference path="schema2class/browser.d.ts" /> console.log(schema2class); </script>
Usage
For example, if you have a JSON schema like this:
{
"type": "object",
"properties": {
"a": {
"type": "integer",
"default": 100
},
"b": {
"type": "array",
"items": {
"type": [
"array",
"object"
],
"items": {
"type": "string",
"default": "klm"
},
"properties": {
"str": {
"type": "string",
"default": "abc"
}
},
"default": [
"hig"
]
},
"default": [
{
"str": "def"
}
]
}
}
}
You can create the factory function for this schema, just like:
const shcema = require('./schema.json');
const s2c = require('schema2class');
const log = console.log;
const schemaFactory0 = s2c(shcema, {
realArray: true, // Bad performance, but '[]'
});
const data0 = schemaFactory0();
log(data0); // ParsedObj {}
log(data0.a); // 100
log(data0.b); // ParsedArr(1) [ <1 empty items> ]
log(data0.b[0].str); // def
log(data0.b instanceof Array); // true
log(Array.isArray(data0.b)); // true
const schemaFactory1 = s2c(shcema);
const data1 = schemaFactory1({
b: [
{ str: "jkl" },
{},
void 0,
[void 0],
],
});
log(data1.b[0]); // ParsedObj { str: 'jkl' }
log(data1.b[1].str); // abc
log(data1.b[2][0]); // hig
log(data1.b[3]); // ParsedArr { '0': 'klm', length: 1 }
log(data1.b instanceof Array); // true
log(Array.isArray(data1.b)); // false
You can also check the correctness of the data through the factory.
const shcema = require('./schema.json');
const s2c = require('schema2class');
const schemaFactory = s2c(shcema, {
check: true, // Check all the error types
});
schemaFactory({ c: 123 });
// ReferenceError: 'c' is not a key of { a; b; }
schemaFactory({ b: ['asd'] });
// TypeError: Type 'string' is not assignable to type 'array | object'