Data una stringa di dati JSON, come si può trasformare in modo sicuro quella stringa in un oggetto JavaScript?
Ovviamente potete farlo in modo non sicuro con qualcosa come...
var obj = eval("(" + json + ')');
...ma questo ci lascia vulnerabili al fatto che la stringa json contenga altro codice, che sembra molto pericoloso semplicemente valutare.
Modifica: Questa risposta è per IE < 7, per i browser moderni controlla la risposta di Jonathan sopra.
Edit: Questa risposta è superata e Jonathan's answer above (JSON.parse(jsonString)
) è ora la migliore risposta.
JSON.org ha parser JSON per molti linguaggi, inclusi 4 diversi per Javascript. Credo che molte persone considerino json2.js la loro implementazione goto.
Non sono sicuro di altri modi per farlo, ma ecco come si fa in Prototype (JSON tutorial).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
Chiamando evalJSON() con true come argomento si sanifica la stringa in arrivo.