Étant donné une chaîne de données JSON, comment pouvez-vous transformer en toute sécurité cette chaîne en un objet JavaScript ?
Évidemment, vous pouvez le faire de manière non sécurisée avec quelque chose comme...
var obj = eval("(" + json + ')');
...mais cela nous laisse vulnérables au fait que la chaîne json puisse contenir un autre code, qu'il semble très dangereux de simplement évaluer.
Edit : Cette réponse est pour IE < 7, pour les navigateurs modernes vérifier la réponse de Jonathan ci-dessus.
Edit : Cette réponse est dépassée et la réponse de Jonathan ci-dessus (JSON.parse(jsonString)
) est maintenant la meilleure réponse.
JSON.org propose des analyseurs JSON pour de nombreux langages, dont 4 différents pour Javascript. Je pense que la plupart des gens considèrent json2.js comme leur meilleure implémentation.
Je ne sais pas s'il existe d'autres façons de procéder, mais voici comment faire dans Prototype (JSON tutorial).
new Ajax.Request('/some_url', {
method:'get',
requestHeaders: {Accept: 'application/json'},
onSuccess: function(transport){
var json = transport.responseText.evalJSON(true);
}
});
L'appel de evalJSON() avec true comme argument assainit la chaîne entrante.
Si vous utilisez [jQuery][1], vous pouvez aussi simplement faire `$.getJSON(url, function(data) { });``.
Vous pouvez alors faire des choses comme data.key1.something
, data.key1.something_else
, etc.
[1] : https://jquery.com/