Freigeben über


JavaScript-Objektnotation (JSON)

JavaScript Object Notation (JSON) ist ein einfaches und einfaches Datenaustauschformat, das auf einer Teilmenge der Objektliteralnotation der JavaScript-Sprache basiert. Das JavaScript-Modul in Windows Internet Explorer 8 implementiert den ECMAScript 3.1 JSON-Vorschlag für systemeigene JSON-Verarbeitungsfunktionen (die Douglas Crockfords json2.js-API-verwendet).

Internet Explorer 8 enthält ein systemeigenes JSON-Objekt, das der JSON-Unterstützung entspricht, die im ES3.1 Proposal Working Draftbeschrieben wird. Einige Webseiten erkennen das systemeigene JSON-Objekt und verwenden es dann auf nicht standardmäßige Weise. Diese Verwendung verursacht in der Regel einen Skriptfehler und bricht die Behandlung von AJAX-Anforderungen. Das folgende Codebeispiel zeigt die falsche Methode zum Verwenden des JSON-Objekts.

    if(!window.JSON) JSON = myJSON; 
    JSON.encode(obj); // Not part of the standard

Stattdessen zeigt das folgende Codebeispiel eine gute Möglichkeit, das JSON-Objekt zu verwenden.

    JSON = myJSON; 
    JSON.encode(obj);

Windows Internet Explorer enthält systemeigene Unterstützung für JSON durch Die Einführung eines globalen JSON-Objekts mit zwei integrierten Methoden: stringify und analyse. Das globale JSON-Objekt wird im JavaScript-Modul definiert und während der Modulinitialisierungsphase erstellt. Um die Abwärtskompatibilität aufrechtzuerhalten, ist dieses Feature nur verfügbar, wenn eine Website die neueste Version von JavaScript-Features verwendet, indem sie den Layoutmodus "Internet Explorer 8 Standards" (Dokument) verwenden. Dieses Feature kann sich auch auf das Verhalten von Webseiten auswirken, die von einer globalen Variablen JSON abhängen oder json2.jsverwenden.

Sie können das globale JSON-Objekt außer Kraft setzen. Wenn eine Webseite jedoch den Layoutmodus "Internet Explorer 8 Standards" (Dokument) verwendet, handelt es sich nicht mehr um ein nicht definiertes Objekt. Da JSON vom JavaScript-Modul als globaler Name instanziiert wird, wird "if(!this) überprüft. JSON)" wird auf "False" ausgewertet und muss im Benutzercode geändert werden.

Webseiten, die json2.js verwenden, sind wahrscheinlich nicht betroffen. Mit wenigen Ausnahmen sollten diese Seiten schneller funktionieren. Die Ausnahmen sind aufgrund der Unterschiede zwischen der systemeigenen JSON-Implementierung von Internet Explorer und json2.js. Beispielsweise erkennt die native JSON-Implementierung während der Serialisierung Zyklen und geht nicht in unendliche Rekursion wie json.js. Weitere Informationen zu diesen Ausnahmen finden Sie in den JavaScript-Blogs.

Weitere Informationen finden Sie in JSON-Dokumentation und Versionsverwaltungs- und JavaScript Engine Version Support.

Beheben von Kompatibilitätsproblemen in Webanwendungen mithilfe der Kompatibilitätsansicht