Heim  >  Artikel  >  Web-Frontend  >  Ausführliche Erklärung zur Verwendung von JSON.parse(), JSON.stringify() und eval()

Ausführliche Erklärung zur Verwendung von JSON.parse(), JSON.stringify() und eval()

php中世界最好的语言
php中世界最好的语言Original
2018-04-25 13:37:552027Durchsuche

Dieses Mal werde ich Ihnen ausführlich erklären, wie Sie JSON.parse(), JSON.stringify() und eval() verwenden, und Vorsichtsmaßnahmen bei der Verwendung von JSON.parse(), JSON.stringify() beachten. und eval(). Was sind das?

"JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Es basiert auf einer Teilmenge von ECMAScript. Aufgrund des sprachunabhängigen Textformats wird es auch ähnlich verwendet Aufgrund der Gewohnheiten der C-Sprachfamilie ist JSON eine ideale Datenaustauschsprache. Es ist für Menschen leicht zu lesen und zu schreiben und auch für Maschinen leicht zu analysieren und zu generieren (wird im Allgemeinen zur Verbesserung der Netzwerkübertragungsraten verwendet).

Heute möchte ich kurz über die Funktionen JSON.parse() und JSON.stringify() in jquery sprechen. Ich werde übrigens auch die Funktion eval() in nativem JS erwähnen

(1) JSON.parse-Funktion

Funktionen: Konvertieren Sie die JavaScript Object Notation (JSON) Zeichenfolge in ein Objekt. ​

Syntax: JSON.parse(text [, reviver])

Parameter:

text Erforderlich. Eine gültige JSON-Zeichenfolge.

Wiederbelebung Optional. Eine Funktion, die das Ergebnis konvertiert. Diese Funktion wird für jedes Mitglied des Objekts aufgerufen.
Rückgabewert: ein Objekt oder Array

Beispiel:

var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = JSON.parse(json);  //解析为JSON对象
document.write(info.name + ' is a student of ' + info.University + ' and he is ' + info.age + " years old."); /info为Object对象

(2) JSON.stringify()-Funktion

Funktion: JavaScript-Wert in JavaScript Object Notation (JSON)-Zeichenfolge konvertieren

Syntax: JSON.stringify( value [, replacementer] [, space])

Parameter:

value Erforderlich, normalerweise der JavaScript-Wert, der konvertiert werden muss (normalerweise ein Objekt oder Array)

Replacer Optional, die Funktion oder das Array, die zum Konvertieren des Ergebnisses verwendet werden

Leerzeichen Optional. Fügt Einrückungen, Leerzeichen und Zeilenumbrüche zum JSON-Text des Rückgabewerts hinzu, um ihn leichter lesbar zu machen.

Rückgabewert: eine Zeichenfolge mit JSON-Text

Beispiel:

var info = {name:"GDT",age:,University:"GDUT"};
var json = JSON.stringify(info); //转换为JSON字符串
document.write(json); //output为{"name":"GDT","age":23,"University":"GDUT"}

(3) eval()-Funktion

Funktion: Die Funktion eval() kann einen bestimmten String berechnen und den darin enthaltenen JavaScript-Code ausführen.

Syntax: eval(string)

Parameter:

string Erforderlich, der zu berechnende String, der den zu berechnenden JavaScript--Ausdruck oder enthält Die auszuführende Anweisung.

Rückgabewert: Gibt den Wert der berechneten Zeichenfolge zurück, falls vorhanden (falls nicht, ohne Änderungen zurückgeben)

Beispiel:

eval("x=;y=;document.write(x*y)"); //output为
document.write(eval("+"));  //output为
var x=;
document.write(eval(x+));  //output为

Sie können auch eval( ) Funktion JSON-Strings in Objekte analysieren Diese Funktion kann die Funktionen von JSON.parse() vervollständigen, es gibt jedoch Unterschiede im folgenden Code:

// JSON.parse()
var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = JSON.parse(json);    //解析为JSON对象
document.write(info); //output为[object Object]
//eval()
var json = '{"name":"GDT","age":,"University":"GDUT"}';
var info = eval('(' + json + ')'); //解析为JSON对象
document.write(info); //output为[object Object]

Ich weiß nicht, ob Ihnen eval() aufgefallen ist. oder nicht. Eine bessere Erklärung, die ich gefunden habe, ist:

Grund: Es wird auf das Problem der Auswertung selbst zurückgeführt, weil json mit „{}“ beginnt In JS wird es als Anweisungsblock verarbeitet, daher muss die Konvertierung in einen Ausdruck erzwungen werden.

Lösung: Der Zweck des Hinzufügens von Klammern besteht darin, die Auswertungsfunktion zu zwingen, den Ausdruck 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 betrachtet. Bitte sehen Sie sich den Unterschied in den folgenden Beispielen an

alert(eval("{}")); // return undefined
alert(eval('('+'{}'+')')); // return object[Object]

Darüber hinaus kann eval() im Vergleich zu JSON.parse() mit striktem Schreibformat jede Zeichenfolge analysieren, da eval relativ locker ist und wird potenzielle Sicherheitsprobleme. Zum Beispiel der folgende Code:

var str = '{"a":"b"}';
document.write(eval("("+str+")")); //正常解析为对象
var str = '{"a": (function(){alert("I can do something bad!");})()}';
eval('('+str+')'); //可以用来执行木马脚本

Wenn ein böswilliger Benutzer ein Skript in den JSON-String einfügt, um einen Trojaner-Link in die Seite einzufügen, kann dies auch mit eval erfolgen, aber Sie müssen sich keine Sorgen machen zu diesem Problem mit JSON.parse() Es ist ersichtlich, dass die Funktion eval() zwar sehr leistungsfähig ist, es jedoch nicht viele Möglichkeiten gibt, sie tatsächlich zu verwenden.

Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!

Empfohlene Lektüre:

JQuery implementiert das Seitenleistenmenü

jquery klickt auf die Miniaturansicht, um den Wiedergabeeffekt zu wechseln

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verwendung von JSON.parse(), JSON.stringify() und eval(). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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