[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON/rawJSON [Back]  [Original]

JSON.rawJSON() - JavaScript | MDN

Dieser Inhalt wurde automatisch aus dem Englischen bersetzt, und kann Fehler enthalten. Erfahre mehr ber dieses Experiment.

View in English Always switch to English

JSON.rawJSON()

Baseline 2025
Neu verfgbar

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.

In diesem Artikel

Syntax

js
JSON.rawJSON(string)

Parameter

string

Der JSON-Text. Muss ein gltiges JSON darstellend einen primitiven Wert sein.

Rckgabewert

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:

rawJSON

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

Ausnahmen

SyntaxError

Wird ausgelst, wenn der string kein gltiges JSON ist oder wenn er ein Objekt oder Array darstellt.

Beschreibung

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:

js
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:

js
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:

js
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:

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

Beispiele

Verwendung von JSON.rawJSON(), um JSON-Ausdrcke unterschiedlicher Typen zu erstellen

js
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:

js
const arrJSON = JSON.rawJSON("[1, 2, 3]");
const objJSON = JSON.rawJSON('{"a": 1, "b": 2}');
// SyntaxError

Verwendung von JSON.rawJSON(), um maskierte Zeichenfolgenliterale zu erstellen

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:

js
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:

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

Spezifikationen

Spezifikation
JSON.parse source text access
# sec-json.rawjson

Browser-Kompatibilitt

Siehe auch


Web Proxy Viewer  |  New URL  |  Original Page