json-transformer-node
v1.0.6
Published
Json Transformer Utility. Many times you want to interact with 3rd party services or clients, this utility acts as an adaptor and help you mantain code clean by maintaining only the json mappings
Downloads
1,113
Maintainers
Readme
Status
json-transformer
A Node.js package that converts json from one format to another.
Usage
First, install the package using npm:
npm install json-transformer-node --save
Then, require the package and use it like this:
var nodeJsonTransformer = require('json-transformer-node');
var data = {
x : "xx",
y : "yy"
}
var transformation = {
mapping : {
item : {
a : "x",
b : "y"
}
}
}
var output = nodeJsonTransformer.transform(data, transformation);
console.log(output);
Output :
{
a : "xx",
b : "yy"
}
Type of Transformations Supported
Object to Object Transformation
var data = { x : "xx", y : { z: "zz" } } var transformation = { mapping : { item: { a : "x", b : "y.z" // dot separated path } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : "xx", b : "zz" }
Array to Array Transformation
var data = { x : "xx", y : [{ z: "z1" }, { z: "z2" }] } var transformation = { "mapping" :{ "item":{ a : "x", b : [{ "list" : "y", "item" : { "c" : "z" } }] } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : "xx", b : [{ "c" : "z1" },{ "c" : "z2" }] }
Using Hardcoded values
var data = { x : "xx", y : "yy" } var transformation = { "mapping" : { "item":{ a : "x", b : "y", c : "$constantValue" } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : "xx", b : "yy", c : "constantValue" }
Array to Object Transformation
var data = { x : { x1 : [{ z : "23" },{ z : "45" }] }, y : "yy" } var transformation = { "mapping" : { "item":{ a : { "flat" : "x.x1#eq(1)", "item": { "c" : "z" } }, b : "y" } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : { c : "45" }, b : "yy" } Note : "flat" : "x.x1#eq(1)" means flat it, x.x1 is the dot separated path to the array, eq(index) specifies the index to pick
Object to Array Transformation
var data = { x : { x1 : "123" }, y : 456, z : "abc" } var transformation = { "mapping" : { "item":{ "arrayItems": { "objectify": "x", "item": { "car": { "c1" : "x1", "c2" : "$abc" } } } } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { arrayItems: [{ car: { c1: "123", c2: "abc" } }] }
Type Conversion
var data = { x : "123", y : 456, z : "abc" } var transformation = { "mapping" : { "item":{ a : "x(NUMBER)", b : "y(STRING)", c : "z(UPPER)" } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : 123, b : "456", c : "ABC" }
Operations - depends etc.
var data = { x : "RED", y : "Jude" } var transformation = { "config": { "dependentMap": { "RED": "stop", "GREEN": "go" } }, "mapping" : { "item":{ a : "x{DEPENDS}" } } } var output = nodeJsonTransformer.transform(data, transformation); console.log(output); Output : { a : "stop" }
License
Apache 2.0