![Greenkeeper badge](https://camo.githubusercontent.com/260e96745ab128a425081b7bbab0a544916847b85b2df04d700addd4e376a563/68747470733a2f2f6261646765732e677265656e6b65657065722e696f2f6c776f697465732f7069636b6c6966792e737667)
const { picklify, unpicklify } = require('picklify');
let serializedData = picklify(someObject);
// serializedData is JSON object that can be saved or being sent through the network
let originalObject = unpicklify(serializedData);
// unpicklify need access to constructors for building the original objects.
// So they must be on the global scope or being passed as a second argument to // unpicklify
let originalObject = unpicklify(serializedData, [class1, class2]);
const aSharedList = [4, 5, 6];
const object1 = {'a': 1, 'l1': aSharedList};
const object2 = {'b': 2, 'l2': aSharedList};
const input = [object1, object2, object1, object2];
const serializedData = picklify.picklify(input);
const reconstructedObject = picklify.unpicklify(serializedData);
reconstructedObject[0].l1 == reconstructedObject[1].l2 // true
reconstructedObject[0] == reconstructedObject[2]; // true
reconstructedObject[1] == reconstructedObject[3]; // true
let object1 = {'a': 1};
const object2 = {'b': 2, 'o1': object1}; //object2 references object1
object1['o2'] = object2; //object1 references object2
const serializedData = picklify.picklify(object1);
const reconstructedObject = picklify.unpicklify(serializedData);
let slash = new Musician('Slash', 44);
let gnr = new Band('GnR', [slash]);
let velvetRevolver = new Band('Velvet Revolver', [slash]);
const bands = [gnr, velvetRevolver];
const serializedData = picklify.picklify(bands);
const reconstructedBands = picklify.unpicklify(
serializedData, [Band, Musician]
);
// evaulates to true
reconstructedBands[0].members[0] == reconstructedBands[1].members[0]