Heim >Web-Frontend >js-Tutorial >Eine eingehende Analyse der Funktionen von JSON.parse(), JSON.stringify() und eval()_javascript Fähigkeiten

Eine eingehende Analyse der Funktionen von JSON.parse(), JSON.stringify() und eval()_javascript Fähigkeiten

WBOY
WBOYOriginal
2016-05-16 15:06:471976Durchsuche

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


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: Konvertieren Sie den JavaScript-Wert in die JavaScript Object Notation (JSON)-Zeichenfolge

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

Parameter:

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


Ersatz Optional, Funktion oder Array zum Konvertieren des Ergebnisses


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


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为

Verwenden Sie die Funktion eval(), um JSON-Strings in Objekte zu analysieren. Diese Funktion kann die Funktionen von JSON.parse() vervollständigen, es gibt jedoch Unterschiede

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

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