Reconstitute JSON: jQuery extension
by danielzen
JavaScript
$.extend({
deepTypeReset:function (obj) {
for (var name in obj) {
var elem = obj[name];
if (typeof elem !== "undefined" && typeof elem._type !== "undefined") {
var newElem = eval("new " + elem._type); //Security hole
jQuery.extend(newElem, elem);
obj[name] = newElem;
$.deepTypeReset(newElem);
}
}
if (typeof obj !== "undefined" && typeof obj._type !== "undefined") {
var newObj = eval("new " + obj._type); //Security hol
return jQuery.extend(newObj, obj);
}
}
});
function Glove(material, color) {
this.material = material;
this.color = color;
this._type = "Glove";
}
Glovebox.prototype = [];
Glovebox.prototype.constructor = Glovebox;
function Glovebox(name) {
this.name = name;
this._type = "Glovebox"
};
Glovebox.prototype.howMany = function() {
console.log("Has "+ this.length+" pairs in box");
};
var pair1 = new Glove("leather", "red");
var pair2 = new Glove("cotton", "black");
var box = new Glovebox();
box.push(pair1);
box.push(pair2);
var jsonString = JSON.stringify(box);
console.log(jsonString);
console.log(box);
var jsonObj = JSON.parse(jsonString);
var box2 = $.deepTypeReset(jsonObj)
console.log(box2);
box2.howMany();
//console.log(typeof obj