Gitt en streng med JSON-data, hvordan kan du trygt gjøre denne strengen om til et JavaScript-objekt?
Åpenbart kan du gjøre dette usikkert med noe som ...
var obj = eval("(" + json + ')');
...men det etterlater oss sårbare for json-strengen som inneholder annen kode, som det virker veldig farlig å bare evaluere.
**Rediger: Dette svaret er for IE < 7, for moderne nettlesere, se Jonathans svar ovenfor.
Rediger: Dette svaret er utdatert og Jonathans svar ovenfor (JSON.parse(jsonString)
) er nå det beste svaret.
JSON.org har JSON-parsere for mange språk, inkludert 4 forskjellige for Javascript. Jeg tror de fleste vil vurdere json2.js som deres goto-implementering.
Jeg er ikke sikker på andre måter å gjøre det på, men slik gjør du det i Prototype (JSON tutorial).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
Kaller evalJSON() med true som argument renser den innkommende strengen.