| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/rawJSON | [Back] [Original] |
Get to know MDN better
Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.
Seit Mrz 2025 funktioniert diese Funktion auf aktuellen Gerten und in aktuellen Browserversionen. Auf lteren Gerten oder in lteren Browsern funktioniert sie mglicherweise nicht.
Die JSON.rawJSON() statische Methode erstellt ein "rohes JSON"-Objekt, das ein Stck JSON-Text enthlt. Wenn es zu JSON serialisiert wird, wird das rohe JSON-Objekt so behandelt, als wre es bereits ein JSON-Stck. Dieser Text muss gltiges JSON sein.
JSON.rawJSON(string)
stringDer JSON-Text. Muss ein gltiges JSON darstellend einen primitiven Wert sein.
Ein Objekt, das verwendet werden kann, um JSON-Text mit dem exakt gleichen Inhalt wie der bereitgestellte string zu erstellen, ohne Anfhrungszeichen um den String selbst. Dieses Objekt hat null Prototype und ist eingefroren (daher wird es niemals versehentlich als regulres Objekt durch eine Art primitivem Konvertierung serialisiert) und hat die folgende Eigenschaft:
rawJSONDer ursprngliche JSON-string, der bereitgestellt wurde.
Darber hinaus hat es ein privates Feld, das sich selbst als rohes JSON-Objekt kennzeichnet. Dies ermglicht es JSON.stringify() und JSON.isRawJSON(), es zu identifizieren.
SyntaxErrorWird ausgelst, wenn der string kein gltiges JSON ist oder wenn er ein Objekt oder Array darstellt.
Ein rohes JSON-Objekt kann als eine unvernderliche, atomare Datenstruktur angesehen werden wie jede Art von Primitive. Es ist kein regulres Objekt und enthlt keine anderen Daten als den rohen JSON-Text. Es wird verwendet, um Daten zu voraus-zu-serialisieren in Formate, die JSON.stringify selbst aus verschiedenen Grnden nicht erzeugen kann. Der typischste Anwendungsfall ist das Problem des Verlusts der Genauigkeit bei Gleitkommazahlen. Zum Beispiel:
JSON.stringify({ value: 12345678901234567890 });
// {"value":12345678901234567000}
Der Wert ist nicht mehr genau gleichwertig mit der ursprnglichen Zahl! Dies liegt daran, dass JavaScript fr alle Zahlen die Gleitkommadarstellung verwendet, sodass es nicht alle Ganzzahlen exakt darstellen kann. Das Zahlenliteral 12345678901234567890 selbst wird bereits auf die nchstliegende darstellbare Zahl gerundet, wenn es von JavaScript geparst wird.
Ohne JSON.rawJSON gibt es keine Mglichkeit, JSON.stringify anzuweisen, das Zahlenliteral 12345678901234567890 zu erzeugen, da es schlichtweg keinen entsprechenden JavaScript-Zahlenwert gibt. Mit rohem JSON knnen Sie JSON.stringify() direkt mitteilen, wie ein bestimmter Wert als String serialisiert werden soll:
const rawJSON = JSON.rawJSON("12345678901234567890");
JSON.stringify({ value: rawJSON });
// {"value":12345678901234567890}
Ein vollstndigeres Beispiel dafr finden Sie unter Verlustfreie Zahlenspeicherung.
Beachten Sie, dass obwohl wir einen String zu JSON.rawJSON() bergeben haben, wird er dennoch im finalen JSON zu einer Zahl. Dies liegt daran, dass der String den wrtlichen JSON-Text darstellt. Wenn Sie einen String serialisieren mchten, sollten Sie JSON.rawJSON() mit einem in Anfhrungszeichen eingeschlossenen Stringwert verwenden:
const rawJSON = JSON.rawJSON('"Hello world"');
JSON.stringify({ value: rawJSON });
// {"value":"Hello world"}
JSON.rawJSON erlaubt Ihnen, beliebigen JSON-Text einzufgen, erlaubt es jedoch nicht, ungltiges JSON zu erstellen. Alles, was durch die JSON-Syntax nicht erlaubt ist, ist auch durch JSON.rawJSON() nicht erlaubt:
const rawJSON = JSON.rawJSON('"Hello\nworld"'); // Syntax error, because line breaks are not allowed in JSON strings
Darber hinaus knnen Sie JSON.rawJSON() nicht verwenden, um JSON-Objekte oder Arrays zu erstellen.
const numJSON = JSON.rawJSON("123");
const strJSON = JSON.rawJSON('"Hello world"');
const boolJSON = JSON.rawJSON("true");
const nullJSON = JSON.rawJSON("null");
console.log(
JSON.stringify({
age: numJSON,
message: strJSON,
isActive: boolJSON,
nothing: nullJSON,
}),
);
// {"age":123,"message":"Hello world","isActive":true,"nothing":null}
Allerdings knnen Sie JSON.rawJSON() nicht verwenden, um JSON-Objekte oder Arrays zu erstellen:
const arrJSON = JSON.rawJSON("[1, 2, 3]");
const objJSON = JSON.rawJSON('{"a": 1, "b": 2}');
// SyntaxError
Abgesehen von Zahlen gibt es nur einen weiteren Typ, der keine eins-zu-eins Entsprechung zwischen JavaScript-Werten und JSON-Text hat: Strings. Wenn Strings zu JSON serialisiert werden, werden alle Codepunkte, auer denen, die in JSON-Stringliteralen nicht legal sind (wie Zeilenumbrche), wrtlich ausgegeben:
console.log(JSON.stringify({ value: "\ud83d\ude04" })); // {"value":""}
Dies ist mglicherweise nicht wnschenswert, da der Empfnger dieses Strings Unicode mglicherweise unterschiedlich behandelt. Um die Interoperabilitt zu verbessern, knnen Sie den zu serialisierenden String explizit mit Escape-Sequenzen angeben:
const rawJSON = JSON.rawJSON('"\\ud83d\\ude04"');
const objStr = JSON.stringify({ value: rawJSON });
console.log(objStr); // {"value":"\ud83d\ude04"}
console.log(JSON.parse(objStr).value); //
Beachten Sie, dass die doppelten Backslashes im rawJSON tatschlich ein einzelnes Backslash-Zeichen darstellen.
| Spezifikation |
|---|
| JSON.parse source text access # sec-json.rawjson |
Der Bauplan fr ein besseres Internet.
Teile dieses Inhalts sind 19982026 von einzelnen mozilla.org-Mitwirkenden. Inhalte sind verfgbar unter einer Creative-Commons-Lizenz.
| Web Proxy Viewer | New URL | Original Page |