So come analizzare una stringa JSON e trasformarla in un oggetto JavaScript. È possibile utilizzare JSON.parse()
nei browser moderni (e IE9 +).
È fantastico, ma come posso prendere quell'oggetto JavaScript e trasformarlo in un particolare oggetto JavaScript (cioè con un certo prototipo)?
Ad esempio, supponiamo di avere:
function Foo()
{
this.a = 3;
this.b = 2;
this.test = function() {return this.a*this.b;};
}
var fooObj = new Foo();
alert(fooObj.test() ); //Prints 6
var fooJSON = JSON.parse({"a":4, "b": 3});
//Something to convert fooJSON into a Foo Object
//....... (this is what I am missing)
alert(fooJSON.test() ); //Prints 12
Ancora una volta, non mi chiedo come convertire una stringa JSON in un oggetto JavaScript generico. Voglio sapere come convertire una stringa JSON in un oggetto "Foo". Cioè, il mio oggetto ora dovrebbe avere una funzione 'test' e proprietà 'a' e 'b'.
AGGIORNAMENTO Dopo aver fatto qualche ricerca, ho pensato a questo ...
Object.cast = function cast(rawObj, constructor)
{
var obj = new constructor();
for(var i in rawObj)
obj[i] = rawObj[i];
return obj;
}
var fooJSON = Object.cast({"a":4, "b": 3}, Foo);
Funzionerà?
AGGIORNAMENTO Maggio 2017 : il modo "moderno" di farlo è attivo Object.assign
, ma questa funzione non è disponibile nei browser Android IE 11 o precedenti.