An open API service indexing awesome lists of open source software.

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

Awesome Lists containing this project

README

          

# The JSON Object Transformer

npm Version
npm Version
Code Factor
Star this repo
Follow me on

**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);
```