Zusammenfassung
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
JSONfür eine Beschreibung der JavaScript Object Notation. reviverOptional-
Als Funktion beschreibt
reviver, wie das Parsing-Ergebnis umgewandelt wird, bevor es zurückgegeben wird.
Rückgabe
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 Ausnahme wenn der String, der geparst werden soll, kein valides JSON ist.
Beispiele
Beispiel: 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
Beispiel: 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.
Der reviver wird letztendlich mit einem leeren String und dem obersten Wert aufgerufen. Die angemessene Behandlung dieses Falls sollte sichergestellt werden, zum Beispiel indem der übergebene Wert direkt zurückgegeben wird, oder JSON.parse() gibt undefined zurück.
JSON.parse('{"p": 5}', function(k, v) {
if (k === '') { return v; } // Wenn oberster Wert, dann direkte Rückgabe,
return v * 2; // sonst v * 2.
}); // { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function(k, v) {
console.log(k); // Logge den Eigenschaften-Namen, der letzte ist "".
return v; // Gib den unveränderten Eigenschaftenwert zurück.
});
// Ausgabe:
// 1
// 2
// 4
// 6
// 5
// 3
// ""
Beispiel: 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 | Initial definition. Implemented in JavaScript 1.7. |
| ECMAScript 6 (ECMA-262) Die Definition von 'JSON.parse' in dieser Spezifikation. |
Anwärter Empfehlung |
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) |
Basierend auf Kangax's compat table.
Gecko-spezifische Notizen
Mit Gecko 29 (Firefox 29 / Thunderbird 29 / SeaMonkey 2.26) ruft ein missgebildetes JSON eine genauere Fehlermeldung hervor, welche Zeile und Spalte des Fehlers enthält.
JSON.parse('[1, 2, 3,]');
// SyntaxError: JSON.parse: unexpected character at
// line 1 column 10 of the JSON data