Heim > Web-Frontend > js-Tutorial > Vergleichende Analyse zweier Methoden zum Parsen von Json in Ajax_json

Vergleichende Analyse zweier Methoden zum Parsen von Json in Ajax_json

WBOY
Freigeben: 2016-05-16 15:53:00
Original
1378 Leute haben es durchsucht

eval(); //Diese Methode wird nicht empfohlen

JSON.parse(); //Empfohlene Methode

1. Der Unterschied zwischen den beiden Methoden

Wir initialisieren zunächst ein Objekt im JSON-Format:

  var jsonDate = '{ "name":"周星驰","age":23 }'

  var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法

  var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法

Nach dem Login kopieren

Dann rufen Sie in der Konsole auf:

console.log( jsonObj.name ); // Beide Methoden können korrekt eingegeben werden Stephen Chow

Dann stellt sich die Frage: Was ist der Unterschied zwischen den beiden Methoden? (Ändern wir den Code unten leicht, die blaue Schriftart ist der geänderte Teil)

  var jsonDate = '{ "name":alert("hello"),"age":23 }'

  var jsonObj = eval( '(' + jsonDate + ')' ); // eval();方法

  console.log( jsonObj.age ); //会先执行“alert”输出“hello” 然后才输出 23

Nach dem Login kopieren

Ersetzen Sie die Methode „JSON.parse();“:

  var jsonDate = '{ "name":alert("hello"),"age":23 }'

  var jsonObj = JSON.parse( jsonDate ); // JSON.parse(); 方法

  cosole.log( jsonobj.age ) // 报错 这个错误告诉我们这个字符串是不合法的

Nach dem Login kopieren

Zusammenfassung: Die Methode „eval();“ bestimmt beim Parsen nicht, ob die Zeichenfolge zulässig ist, und die js-Methode im JSON-Objekt wird ebenfalls ausgeführt, was sehr gefährlich ist und „JSON.parse();“ „Unnötig zu erwähnen, dass die Vorteile dieser Methode sehr empfehlenswert sind. (Freunde, die es nicht verstehen, können es selbst auf der Konsole testen)

2. Erweiterungsprobleme

Code kopieren Der Code lautet wie folgt:

var jsonDate = '{ "name": "Stephen Chow", "age":23 }'

Sie können sehen, dass im obigen Test die Anführungszeichen außerhalb der geschweiften Klammern rot markiert wurden. Dieses Anführungszeichenpaar ist sehr wichtig, wird jedoch häufig ignoriert, da „eval();“ ();" Die Parameter dieser beiden Methoden akzeptieren nur Zeichenfolgen, was bedeutet, dass sie nur Zeichenfolgen analysieren können!!

Dann habe ich einen Gedanken. Wenn wir beim Initialisieren keine Anführungszeichen hinzufügen, ist es selbst ein Objekt, und js kann die Eigenschaften und Methoden des Objekts selbst direkt abrufen in Zeichen umwandeln? Dann verwenden Sie „eval();“ oder „JSON.parse();“

Der Grund ist ganz einfach: Das Front-End kann dem Back-End nur ein String-Datenformat bereitstellen. Was das Back-End an das Front-End zurückgibt, hängt vom zurückgegebenen Datenformat ab muss vor der Verwendung analysiert werden.

(Dies ist ein kleines Problem, das im Allgemeinen jeder ignoriert und dem er nicht viel Aufmerksamkeit schenkt. Der Grund, warum ich neugierig bin, ist, dass ich nicht genug über das Backend weiß. Ich poste diese Frage in der Hoffnung, dass es wird für Freunde hilfreich sein, die mit dem Backend nicht vertraut sind und nicht wissen, wie es funktioniert. Es wird Ihr Gedächtnis nach dem Vorfall auf natürliche Weise vertiefen, sodass Sie es während des Entwicklungsprozesses nicht verpassen)

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er gefällt Ihnen allen.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage