https://github.com/tradologics/schemorfer
Schemorfer - The JSON object transformer
https://github.com/tradologics/schemorfer
json json-converter json-schema nodejs npm
Last synced: 10 months ago
JSON representation
Schemorfer - The JSON object transformer
- Host: GitHub
- URL: https://github.com/tradologics/schemorfer
- Owner: tradologics
- License: apache-2.0
- Created: 2020-05-19T15:11:30.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2022-07-06T09:28:28.000Z (almost 4 years ago)
- Last Synced: 2025-06-27T07:03:32.558Z (12 months ago)
- Topics: json, json-converter, json-schema, nodejs, npm
- Language: JavaScript
- Homepage: https://npmjs.com/@tradologics/schemorfer
- Size: 223 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: license.txt
Awesome Lists containing this project
README

# The JSON Object Transformer
**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](https://json-schema.org/understanding-json-schema/index.html) file. It uses [Ajv](https://github.com/ajv-validator/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](https://tradologics.com) to convert various JSON payloads from various API providers into a standardized, pre-defined format.
## Install
```
$ npm install @tradologics/schemorfer
```
# Usage
```javascript
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);
```
### Keywords
```
- $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 🙂
---
## JSON Schema Validation
```javascript
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);
```