Heim >Web-Frontend >js-Tutorial >Eine eingehende Analyse der Funktionen von JSON.parse(), JSON.stringify() und eval()_javascript Fähigkeiten
„JSON (JavaScript Object Notation) ist ein leichtes Datenaustauschformat. Es basiert auf einer Teilmenge von ECMAScript. Da es ein sprachunabhängiges Textformat verwendet, verwendet es auch ähnliche Gewohnheiten wie die C-Sprachfamilie und verfügt über diese Eigenschaften machen JSON zu einer idealen Datenaustauschsprache, die für Menschen leicht zu lesen und zu schreiben ist und auch für Maschinen leicht zu analysieren und zu generieren ist (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
Funktion: Konvertieren Sie die JavaScript Object Notation (JSON)-Zeichenfolge in ein Objekt. Syntax: JSON.parse(text [, reviver])
Parameter:
Text Erforderlich. Eine gültige JSON-Zeichenfolge.
Rückgabewert: ein Objekt oder Array
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: Konvertieren Sie den JavaScript-Wert in die JavaScript Object Notation (JSON)-ZeichenfolgeSyntax: JSON.stringify( value [, replacementer] [, space])
Parameter:
Wert Erforderlich, normalerweise der JavaScript-Wert, der konvertiert werden muss (normalerweise ein Objekt oder Array)
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 String berechnen und den darin enthaltenen JavaScript-Code ausführen.Syntax: eval(string)
Parameter:
string Erforderlich, die auszuwertende Zeichenfolge, die den auszuwertenden JavaScript-Ausdruck oder die auszuführende Anweisung enthält.
Beispiel:
eval("x=;y=;document.write(x*y)"); //output为 document.write(eval("+")); //output为 var x=; document.write(eval(x+)); //output为
// 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 aufgefallen ist, dass eval() auch ein Paar Klammern zum Umschließen der Zeichenfolge verwendet. Ich habe eine bessere Erklärung dafür gefunden:
Grund: Dies liegt am Problem der Auswertung selbst. Da JSON in JS mit „{}“ beginnt und endet, wird es als Anweisungsblock verarbeitet und muss daher in einen Ausdruck umgewandelt 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 ausgeführt. 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. eval ist unsicher, da eval relativ locker ist und potenzielle Sicherheitsprobleme aufweist. 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 einfügt, das einen Trojaner-Link in die Seite in den JSON-String einfügt, kann dies auch mit eval erfolgen. Mit JSON.parse() müssen Sie sich jedoch keine Sorgen über dieses Problem machen. Es ist ersichtlich, dass die Funktion eval() zwar sehr leistungsstark ist, es jedoch nicht viele Möglichkeiten gibt, sie tatsächlich zu verwenden.
Es ist Zeit für eine persönliche Zusammenfassung. Er wurde am 1. April geboren. Ich hoffe wirklich, dass die aktuelle Technologie sehr schlecht ist dass ich es jetzt schaffen kann, Stück für Stück Wissen anzusammeln und eine gute Grundlage für den zukünftigen Erfolg zu legen, zu kämpfen~