exjson
v1.3.0
Published
repetitive object compression by templating
Downloads
1
Maintainers
Readme
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}
]
}
*/