Skip to content

Latest commit

 

History

History
100 lines (74 loc) · 3.26 KB

README.md

File metadata and controls

100 lines (74 loc) · 3.26 KB

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 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.

Install

$ npm install @tradologics/schemorfer

Usage

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

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