Heim  >  Artikel  >  Web-Frontend  >  Einführung in Punkte, die beim Parsen von JSON mit jqueyeval zu beachten sind

Einführung in Punkte, die beim Parsen von JSON mit jqueyeval zu beachten sind

黄舟
黄舟Original
2016-12-16 10:45:331244Durchsuche

Es gibt im Allgemeinen zwei Möglichkeiten, JSON-Strings in das JSON-Datenformat in JS zu analysieren:

1. Eine besteht darin, die Funktion eval() zu verwenden.

2. Verwenden Sie das Funktionsobjekt, um eine Rückgabeanalyse durchzuführen.

Verwenden Sie die Funktion eval zum Parsen und verwenden Sie die Methoden „jede“ von jquery zum Durchlaufen.

Verwenden Sie jquery zum Parsen von JSON-Daten. Als Übertragungsobjekt der asynchronen JQuery-Anfrage ist das nach der JQuery-Anfrage zurückgegebene Ergebnis JSON-Objekte werden hier in Form von Zeichenfolgen betrachtet, die vom Server in JSON-Form zurückgegeben werden. Für JSON-Objekte, die durch Plug-Ins wie JSONObject gekapselt sind, ist der Prozess ähnlich und wird hier nicht erläutert.
Der JSON-String-Satz wird hier zuerst angegeben. Der String-Satz lautet wie folgt:

var data=" {
root:
[
{name:'1',value :' 0'},
{Name:'6101',Wert:'Beijing'},
{Name:'6102',Wert:'Tianjin'},
{Name:'6103', value:'Shanghai City'},
{name:'6104',value:'Chongqing City'},
{name:'6105',value:'Weinan City'},
{name: '6106',value:'Yan'an City'},
{name:'6107',value:'Hanzhong City'},
{name:'6108',value:'Yulin City'},
{name:'6109',value:'Ankang City'},
{name:'6110',value:'Shangluo City'}
]
}";

Basierend auf den Datentypen, die jquery asynchron erhält – JSON-Objekte und Strings – stellen wir hier die Verarbeitungsmethoden der auf zwei Arten erhaltenen Ergebnisse vor.

1. Wenn die asynchrone JQuery-Anfrage den Typ nicht angibt oder ihn in Form einer Zeichenfolge akzeptiert, muss die Methode nicht objektiviert werden mühsam, das heißt, konvertieren Sie die Zeichenfolge, fügen Sie sie in eval() ein und führen Sie sie einmal aus. Diese Methode eignet sich auch zum Abrufen von JSON-Objekten mit gewöhnlichem Javascript. Das Folgende ist ein Beispiel:

var dataObj=eval("("+data+")");//In JSON-Objekt konvertieren
Warum eval ist erforderlich. Wie wäre es mit dem Hinzufügen von „(“(„+data+“)“);//“ hier?

Der Grund ist: das Problem der Bewertung selbst. Da JSON mit „{}“ beginnt und endet, wird es in JS als Anweisungsblock verarbeitet, sodass die Konvertierung in einen Ausdruck erzwungen werden muss.

Der Zweck des Hinzufügens von Klammern besteht darin, die Auswertungsfunktion zu zwingen, den Ausdruck (exPRession) in den Klammern bei der Verarbeitung von Javascript-Code in ein Objekt umzuwandeln, anstatt ihn als Anweisung auszuführen. Nehmen Sie zum Beispiel das Objektliteral {}. Wenn keine äußeren Klammern hinzugefügt werden, erkennt eval die Klammern als Anfangs- und Endmarkierungen des JavaScript-Codeblocks und {} wird als eine leere Anweisung ausgeführt. Die folgenden beiden Ausführungsergebnisse sind also unterschiedlich:

alert(eval("{}"); // return undefinierter Alert(eval("({})");// return object[Object]

Sie können diese Schreibmethode überall in JS sehen

Zum Beispiel: (function()) {}(); Bei Abschlussoperationen usw.

alert(dataObj. root.length);//Geben Sie die Anzahl der untergeordneten Objekte von root aus $.each(dataObj.root,fucntion(idx,item){

if(idx==0){
return true;
}
//Geben Sie den Namen und den Wert jedes Root-Unterobjekts aus 🎜>Hinweis: Damit allgemeine JSON-Objekte generiert werden können, müssen Sie nur die Methode $.each() durch eine for-Anweisung ersetzen, und die anderen bleiben unverändert.

2 Für die von der zurückgegebenen JSON-Zeichen server. String: Wenn die asynchrone JQuery-Anfrage den Typ (normalerweise dieses Konfigurationsattribut) auf „json“ setzt oder die Methode $.getJSON() verwendet, um die Serverrückgabe abzurufen, ist die Methode eval() nicht erforderlich, da die Das zu diesem Zeitpunkt erhaltene Ergebnis ist bereits ein JSON-Objekt. Sie müssen das Objekt nur direkt aufrufen. Hier wird die Methode $.getJSON als Beispiel verwendet, um die Datenverarbeitungsmethode zu veranschaulichen:

$. getJSON("http://www.phpzixue.cn/", {param:"gaoyusi"},function(data){

//Die hier zurückgegebenen Daten sind bereits ein JSON-Objekt//Die folgenden anderen Operationen sind die Identisch mit dem ersten Fall $.each(data.root,function(idx,item ){
if(idx==0){
return true;//Identisch mit countinue, return false, genau wie break }

alert("name:"+item.name+",value:"+item.value);



Was hier besondere Aufmerksamkeit erfordert ist, dass die Methode eval() in Methode 1 die Zeichenfolge dynamisch ausführt (möglicherweise ein js-Skript). Ja, dies kann leicht zu Systemsicherheitsproblemen führen, sodass Sie beispielsweise einige Client-Skriptbibliotheken von Drittanbietern verwenden können, die eval() umgehen. JSON in JavaScript stellt eine Skriptbibliothek bereit, die 3 KB nicht überschreitet. Die zweite Methode zum Parsen ist die Verwendung von Funktionsobjekten. Ihre typische Anwendung ist das Parsen zurückgegebener Daten, z. B. Erfolg unter der Ajax-Methode in JQUERY

var json ='{"name": "CJ", "age":18}';
data =(new Function("","return "+json))(); Bei den Daten handelt es sich zu diesem Zeitpunkt um eine Datei, die in ein JSON-Objekt analysiert wird. Das Obige ist die Einführung in die Jqueyeval-Analyse von JSON. Weitere verwandte Artikel finden Sie auf der chinesischen PHP-Website (www.php.cn)!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn