README
dumpjs
Sometimes you need serialize your objects to JSON and deserialize them back again. But JSON stringify/parse is not enough, because you need support circular links and restore custom object.
Dumpjs allow easily serialize to JSON and restore any object.
Main points:
- It handle circular links
- Preserve object identities
- Works with any level of nesting objects
- Support ES6 Map and Set
- Support custom serialization/deserialization handlers
It use ES6 collections internally and need polyfill in old browsers.
API
-> D.dump(target[,options])JSON
Target
Plain object or array which need to be serialized.
Options
options.serializer(key, value)
— custom serialization function
- If function returns
undefined
, then property will be ignored. Any other returned value will be serialized. If function returnsnull
, then property will be serialized asnull
(JSON.stringify
convertsundefined
tonull
). - Memorizes received value and invocation result. For the same value always return the same result.
-> D.restore(source[,options])Object|Array
Source
Valid JSON for deserialization
Options
options.deserializer(key, value)
– custom deserialization
- Memorizes received value and invocation result. For the same value always return the same result.
Examples
Circular links
var obj = {x: 1, y: {h: 'hello'}};
obj.y.o = obj;
JSON.stringify(obj);
// TypeError: Converting circular structure to JSON
var D = require('dumpjs');
D.dump(obj);
// {
// "@0": {
// "x": 1, "y": "@1"
// },
// "@1": {
// "h": "hello", "o": "@0"
// }
// }
Dumpjs creates IDs for every object and use them as references.
Preserve identities
var obj2 = {x: 1, y: 2};
var obj3 = [obj2, obj2];
var restored = JSON.parse(JSON.stringify(obj3));
restored[0] === restored[1]; // false
JSON.parse create completly different objects.
var restored = D.restore(D.dump(obj3));
restored[0] === restored[1]; // true
Install
npm install --save dumpjs
Works in node and browser.