Maison >interface Web >js tutoriel >Résumé détaillé des compétences JSON_javascript en matière d'opération JS

Résumé détaillé des compétences JSON_javascript en matière d'opération JS

WBOY
WBOYoriginal
2016-05-16 16:58:021010parcourir

Il existe généralement deux façons d'analyser les chaînes JSON au format de données JSON dans JS :

1. La première consiste à utiliser la fonction eval_r().

2. Utilisez l'objet Function pour effectuer une analyse de retour.

Dans le processus de transmission de données, json est transmis sous forme de texte, c'est-à-dire une chaîne, et JS fonctionne sur des objets JSON, donc la conversion entre les objets JSON et les chaînes JSON est la clé. Par exemple :

Chaîne JSON :
var str1 = '{ "name": "cxh", "sex": "man" }';

Objet JSON :
var str2 = { "name": "cxh", "sex": "man" };

La première solution :
var dataObj=eval_r("(" data ")");//Convertir en objet json
Pourquoi eval Et si on ajoutait "("(" data ")");//" ici ?

La raison est : le problème de l'évaluation elle-même. Puisque json commence et se termine par "{}", il sera traité comme un bloc d'instructions dans JS, il doit donc être forcé pour être converti en expression.

Le but de l'ajout de parenthèses est de forcer la fonction eval à convertir l'expression entre parenthèses en objet au lieu de l'exécuter en tant qu'instruction lors du traitement du code JavaScript. Par exemple, prenez l'objet littéral {}. Si aucun crochet extérieur n'est ajouté, alors eval reconnaîtra les accolades comme les marques de début et de fin du bloc de code JavaScript, et {} sera considéré comme exécutant une instruction vide. Les deux résultats d'exécution suivants sont donc différents :
alert(eval_r("{}"); // return undefined
alert(eval_r("({})"); // return object[Object]

Ce type d'écriture peut être vu partout dans JS.

Par exemple : (function()) {}(); Lors d'opérations de fermeture, etc.

var str1 = '{ "name": "cxh", "sex": "man" }';
var data=eval_r("(" str1 ")");//Convertir en objet json/ /data =(new
alert (data.name);//cxh

sera affiché

Ce qui nécessite une attention particulière ici, c'est que la méthode eval_r() de la méthode 1 exécute dynamiquement la chaîne (éventuellement un script js), ce qui peut facilement provoquer des problèmes de sécurité du système. Par conséquent, vous pouvez utiliser certaines bibliothèques de scripts client tierces qui contournent eval_r(). Par exemple, JSON en JavaScript fournit une bibliothèque de scripts ne dépassant pas 3 Ko.

La deuxième solution :
La deuxième méthode d'analyse consiste à utiliser l'objet Function. Son application typique est le succès sous la méthode AJAX dans JQUERY. les données renvoyées data
var str1 = '{ "name": "cxh", "sex": "man" }';
var data = (Function("","return " str1) )() ;
alerte (data.name);//cxh

sera affiché
Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn