0.1.6 • Published 7 years ago

json-shapper v0.1.6

Weekly downloads
-
License
MIT
Repository
-
Last release
7 years ago

a declarative and extendable json transformer


why

Based on my experience, it's a common situation where the JSON data returned from server needs to be transformed to meet the requirement of my client model. That's where this transformer comes in.

features

  • a JSON Schema-like structure to describe the JSON declarativly
  • extendable via plugins

install

npm install --save json-shapper

usage

define a schema via simplified schema:

const {reviveSchema, transform} = require('json-shapper');

//
let hashSchema = {
    // `properties` indicate it's a object
    properties: {
        // sx1 is the `source` key, the key from the server
        // tx1 is the `target` key
        tx1: 'sx1',
        // if it's a symble '=', we treat it as `tx3: 'tx3'`
        tx3: '=',
        // an arbitrary function to do the transform
        tz1: (jsonNodeData) => 1,
        // nested schema
        ty: {
            name: 'oy',
            test: '1',
            properties: {
                tk1: 'ok2',
                tk2: 'ok3'
            }
        },
        tz: {
            name: 'oy2',
            // if it's an array, use `children` instead
            children: {
                tk1: 'ok2'
            }
        }
    }
}; 

// get a full edition of the schema
const fullHashSchema = reviveSchema(hashSchema);

// transform
const resultObj = transform(fullHashSchema, {
    sx1: 1,
    tx3: 2,
    oy: {
        ok2: 3,
        ok3: 4
    },
    oy2: [{
        ok2: 1,
    }, {
        ok2: 2
    }]
});

// the result 
// {
//     "tx1": 1,
//     "tx3": 2,
//     "tz1": 1,
//     "ty": {
//         "tk1": 3,
//         "tk2": 4
//     },
//     "tz": [{
//         "tk1": 1
//     }, {
//         "tk1": 2
//     }]
// }
0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago