2010-03-26 4 views
0

J'utilise des données JSON et itérer à travers jquery et d'afficher mes résultats ...Quel est le moyen le plus efficace d'analyser json dans jquery?

En utilisant var jsonObj = JSON.parse(HfJsonValue); œuvres dans firefox mais pas IE6 ....

HfjsonValue est une chaîne JSON qui est renvoyée de mon aspx code behind page ... donc je n'utiliser ajax ... Toute suggestion pour obtenir mon mieux et JSON analysé croix navigateur ... un

+0

JSON est la notation d'objet JavaScript, elle n'a pas besoin d'être analysée dans JS. Vous pouvez simplement commencer à l'utiliser comme un objet régulier. – RaYell

+0

@RaYell je l'ai essayé ... Mais cela n'a pas fonctionné –

+0

Vous devrez peut-être 'eval()' le JSON en premier. –

Répondre

6

Probablement ceci: http://api.jquery.com/jQuery.parseJSON/

var obj = jQuery.parseJSON('{"name":"John"}'); 
alert(obj.name === "John"); 

... euh, bien sûr, c'est seulement si vous voulez utiliser jQuery 1.4. :) Je pense que la fonctionnalité intégrée de JSON est un ajout assez nouveau aux navigateurs qui essayent réellement d'implémenter des normes.

Modifier

Tout comme un suivi, vous pouvez transformer une chaîne JSON dans un objet JavaScript en appelant la fonction « eval » sur elle:

var obj = eval('({"name":"John"})'); 
alert(obj.name === "John"); 

Cela devrait donner le même résultat comme le jQuery parseJSON ci-dessus. La différence est que la fonction JavaScript "eval" exécutera tout code à l'intérieur, donc si la source de votre JSON est un site externe ou une autre source non fiable, cette source pourrait injecter du code malveillant dans la chaîne que vous attendez. Je crois qu'il y a une nouvelle recommandation que les navigateurs implémentent l'analyse JSON intégrée, qui imposerait le format littéral d'objet JavaScript sur la chaîne, ce qui fournirait une alternative sûre à "eval".

Modifier 2

Ayant jamais réellement utilisé pour traiter eval JSON, je supposais à tort mon exemple fonctionnerait. Il est maintenant fixé avec l'ajout des accolades environnantes.

+0

@nick qui a fonctionné .. Parce que j'utilise jquery seulement ... –

+0

@nick qui est plus rapide ... –

+0

Vous devez inclure des crochets à l'intérieur des parenthèses eval: 'eval ('({" name ":" John "})' Si vous voulez une vitesse brute, 'var obj = new Fonction ('return {" name ":" John "}')' sera la plus rapide. Sachez cependant que jQuery.parseJSON vérifie le JSON pour s'assurer qu'il est JSON valide; et pas de code malveillant. Les deux méthodes 'new Function' et' eval' ne le font pas. Je recommanderais jQuery.parseJSON. – Matt

Questions connexes