Schemorfer is a JSON Schema transformation library.
It converts the source JSON
structure to a different one, based on a supplied map JSON
file, which contains instructions on how to convert each element.
Schemorfer also has the option to validates the schema against a valid e JSON Schema file. It uses Ajv under the hood to validate, assign defaults to optional/empty properties, and remove empty properties from the source JSON
data.
Schemorfer was developed by Tradologics to convert various JSON payloads from various API providers into a standardized, pre-defined format.
$ npm install @tradologics/schemorfer
const schemorfer = require('@tradologics/schemorfer');
// option 1
const data = require('./post-payload.json');
const mapper = require('./post-mapper.json');
const newData = schemorfer.transform(data, mapper);
// option 2
// const newData = schemorfer.transform(
// './post-payload.json', './post-mapper.json');
console.log(newData);
- $from = source key
- $default = default value (if empty, undefined, or null)
- $rename = array-based rename
- $if
- $prop = the property to check against
- $is (for true/false)
- $typeof
- $condition, either
- $type = simple/const (default = simple)
- $const = eval statement
- $then (required for if), either
- $from = source key
- $value = hard coded value
- $else, either
- $from = source key
- $value = hard coded value
- :: = nested source
- $apply - optional function to manipulate the value (`value` is passed as parameter)
$apply
example:
{
...
"$apply": "return value.toUpperCase()"
...
}
* More docs coming soon 🙂
const schemorfer = require('schemorfer');
// option 1
const payload = require('./post-payload.json');
const schema = require('./post-schema.json');
const valid = schemorfer.validate(payload, schema);
// option 2
// const valid = schemorfer.validate(
// './post-payload.json', './post-schema.json');
if (!valid) {
console.error(schemorfer.errors());
}
// payload now has all the optional fields populated with the defaults
console.log(valid);