exjson

1.3.0 • Public • Published

exJSON

exJSON is a way to preformat and reduce redundancy in JSON by extracting repeated values. It's build on top of JSON, and is a lightweight library which can implemented in applications which send back and forth a lot of repetitive data. It also supports translating parsed data back into classes.

Usage

    const exJSON = require('exjson');
    
    /*
    @param toStringify Object/Array/Primitive thing to be stringified
    @param options Object
        @property identifierString String String to identify templates. Must be set or will cause parsing error later.
        @default "I:"
        @property convertToJSON boolean Whether to convert to string in end or not
        @default true
        @property storeRepeated boolean Whether to store values in a separate array and reference that array elsewhere
        @default true
        @property compress function compression function to be called at the end, convenience wrapper
        @default i=>i
    */
    let test = {
        x: 1,
        y: 2,
        children: [
            {x:4, y:3},
            {x:6, y:9}
        ]
    };
    let str = exJSON.stringify(test);
    /*
    {"templates":["x,y","x,y,children"],
    "repeated":[1,2,4,3,6,9],
    "values":[0,1,[[2,3,"I:0"],[4,5,"I:0"]],"I:1"],
    "options":{"sr":true,"id":"I:"}}
    */
    
    /*
        @param toParse String string that will be parsed into an object.
        @param options Object
            @property templates Array of templates that can be overwritten. Generally best not to set.
            @default toParse.templates || []
            @property repeated Array of repeated values that can be overwritten. Best to leave alone.
            @default toParse.repeated || []
            @property constructors Array of constructors which will replace templates upon the parsed object being reconstructed
            @default []
    */
    let result = exJSON.parse(str);
    /*
    {
        x: 1,
        y: 2,
        children: [
            {x:4, y:3},
            {x:6, y:9}
        ]
    }
    */

Package Sidebar

Install

npm i exjson

Weekly Downloads

0

Version

1.3.0

License

MIT

Last publish

Collaborators

  • tomzer0