Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/e0selmy4v/schema2class
Parse JSON schema to class
https://github.com/e0selmy4v/schema2class
class es3 ie6 json-schema parse parser schema schema-parser
Last synced: 16 days ago
JSON representation
Parse JSON schema to class
- Host: GitHub
- URL: https://github.com/e0selmy4v/schema2class
- Owner: E0SelmY4V
- License: mit
- Created: 2022-12-24T11:32:54.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2023-01-25T17:48:17.000Z (almost 2 years ago)
- Last Synced: 2024-11-16T17:11:21.293Z (about 2 months ago)
- Topics: class, es3, ie6, json-schema, parse, parser, schema, schema-parser
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/schema2class
- Size: 27.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
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
```javascript
import schema2class from 'schema2class';
```- Typescript
```javascript
import schema2class = require('schema2class');
```- CommonJS
```javascript
const schema2class = require('schema2class');
// or
var schema2class = require('schema2class/es3');
```- Broswer
```html
/// <reference path="schema2class/browser.d.ts" />console.log(schema2class);
```## Usage
For example, if you have a JSON schema like this:
```json
{
"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:
```javascript
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)); // trueconst 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.
```javascript
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'
```