Je n'ai pas de d�mo simple sous le coude
mais en gros la majorit� des lib font � peut pr�s toutes la m�me chose pour transformer le json en objet js
var myObject = eval('(' + myJSONtext + ')');
si myJSONtext contient alert('toto') une boite de dialogue va s'afficher. si c'est un code plus pernicieux qui est plac� dans la variable il sera ex�cut�.
la chose consiste � remplacer cela par
var myObject = JSON.parse(myJSONtext);
un c'est plus facile � �crire et deux s'il y a un code malicieux il ne sera pas ex�cut�. le probl�me aujourd'hui c'est que JSON.parse n'existe pas sur tous les navigateur il faut donc en cr�er un en js donc lent pour pouvoir utiliser la fonction.
l'@dresse suivante montre les diff�rence de comportement sur les deux approches http://json.parser.online.fr/
utilisez d'abord l'exemple fourni
puis essayez avec
{"b":jsonParse.innerHTML=6
dans le eval jsonParse.innerHTML va �tre remplac� par 6 et vous n'aurez pas votre json d'afficher car ce code � modifi� la page.
dans la partie pars� vous aurez b:6
et ensuite avec
{"a":document.location.hostname}
dans la partie eval a � pour valeur "document.location.hostname"
alors que dans la partie parser il � reconnu la r�f�rence et a prend la valeur du hostname
on ne peut donc pas faire un simple remplacer de eval par JSON.parse il faut penser son appli avec JSON.parse
si vous utilis� un librairie qui a une m�thode parse pour le JSON comme par exemple dans ExtJS
faites un test sur plusieurs navigateurs
Ext.util.JSON.decode('{"a":JSON.parse}')
A+JYT
Partager