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
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