JSON.parse()

Die Methode JSON.parse() parst einen JSON-String in ein JavaScript-Objekt, wobei dieser optional noch einmal umgewandelt werden kann.

Syntax

JSON.parse(text[, reviver])

Parameter

text
Der String, der als JSON geparst werden soll. Siehe JSON für eine Beschreibung der JavaScript Object Notation.
reviver Optional

Als Funktion beschreibt reviver, wie das Parsing-Ergebnis umgewandelt wird, bevor es zurückgegeben wird.

Rückgabewert

Gibt das Object zum JSON text entsprechende JavaScript-Objekt zurück. (Jeder akzeptierte Wert in JavaScript ist auch ein Objekt in JavaScript. Siehe Beispiele.)

Ausnahmen

Wirft eine SyntaxError wenn der String, der eingelesen werden soll, kein valides JSON ist.

Beispiele

JSON.parse() verwenden

JSON.parse('{}');              // {}
JSON.parse('true');            // true
JSON.parse('"foo"');           // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null');            // null

Den reviver Parameter verwenden

Wenn ein reviver angegeben wird, wird der durch das Parsing errechnete Wert vor der Rückgabe transformiert. Genauer wird der errechnete Wert und all seine Eigenschaften (beginnend bei der am tiefsten verwurzelten Eigenschaft bis hinauf zum ursprünglichen Wert) jeweils einzeln durch den reviver gegeben, wobei der Eigenschaften-Name und dessen Wert als Parameter, und das enthaltende Objekt als this übergeben wird. Gibt die reviver Funktion undefined (oder keinen Wert, z.B. weil das Ende der Funktion erreicht wird) zurück, wird die Eigenschaft vom sie enthaltenden Objekt gelöscht. Anderenfalls wird die Eigenschaft auf den Rückgabewert des reviver neu definiert.

Wenn reviver nur einige Werte ändert, muss sichergestellt sein, dass die unveränderten Werte auch zurückgegeben werden, ansonsten werden diese Werte aus dem Ergebnis gelöscht.

JSON.parse('{"p": 5}', function(k, v) {
  if (typeof k === 'number') { 
    return v * 2;    // Gibt v * 2 für Zahlen zurück. 
  } 
  return v;          // Alle anderen Werte werden unverändert zurückgegeben..
});                           

// { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) {
  console.log(k); // Loggt die Namen der Eigenschaften, der letzte ist "".
  return v;       // Gib den unveränderten Eigenschaftenwert zurück.
});

// Ausgabe:
// 1
// 2
// 4
// 6
// 5
// 3 
// ""

JSON.parse() erlaubt keine abschließenden Kommas

// Beides wirft einen Syntaxfehler
JSON.parse("[1, 2, 3, 4, ]");
JSON.parse("{ \"foo\" : 1, }");

Spezifikationen

Spezifikation Status Kommentar
ECMAScript 5.1 (ECMA-262)
Die Definition von 'JSON.parse' in dieser Spezifikation.
Standard Initiale Definition. Implementiert in JavaScript 1.7.
ECMAScript 2015 (6th Edition, ECMA-262)
Die Definition von 'JSON.parse' in dieser Spezifikation.
Standard  
ECMAScript 2017 Draft (ECMA-262)
Die Definition von 'JSON.parse' in dieser Spezifikation.
Entwurf  

Browserkompatibilität

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Grundlegende Unterstützung (Ja) 3.5 (1.9.1) 8.0 10.5 4.0
Feature Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Grundlegende Unterstützung (Ja) (Ja) 1.0 (1.0) (Ja) (Ja) (Ja)

Gecko-spezifische Notizen

Mit Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26) erzeugt ein falsches JSON eine genauere Fehlermeldung hervor, welche Zeile und Spalte des Fehlers enthält. Das ist nützlich, wenn große JSON-Daten betrachtet werden

JSON.parse('[1, 2, 3,]');
// SyntaxError: JSON.parse: unexpected character at
// line 1 column 10 of the JSON data

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

 Mitwirkende an dieser Seite: schlagi123, maxkl, dguhl
 Zuletzt aktualisiert von: schlagi123,