JSON.isRawJSON()
Baseline 2025>
Neu verfügbar
Seit März 2025 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.
Die statische Methode JSON.isRawJSON() prüft, ob ein Wert ein von JSON.rawJSON() zurückgegebenes Objekt ist.
Syntax
JSON.isRawJSON(value)
Parameter
value-
Der zu prüfende Wert.
Rückgabewert
true, wenn value durch JSON.rawJSON() erstellt wurde; andernfalls false.
Beschreibung
„Raw JSON“-Objekte werden bei der Serialisierung in JSON so behandelt, als wären sie bereits ein Teil von JSON. Aufgrund der Funktionsweise von JSON.rawJSON() ist außerdem gewährleistet, dass das Raw JSON syntaktisch gültiges JSON ist. Weitere Informationen zur Struktur und zum Verhalten von Raw JSON-Objekten finden Sie unter JSON.rawJSON(). Diese Methode ermöglicht es anderen Serialisierungsbibliotheken, für Raw JSON-Objekte ein ähnliches Verhalten wie JSON.stringify() zu implementieren.
Beispiele
>JSON.isRawJSON() verwenden
Das folgende Beispiel zeigt, wie Sie mit JSON.isRawJSON() prüfen, ob ein Objekt von JSON.rawJSON() zurückgegeben wurde. Es implementiert einen benutzerdefinierten Serializer, der Daten in ein YAML-ähnliches Format serialisiert.
function mySerializer(value, indent = "") {
if (typeof value !== "object" || value === null) {
return JSON.stringify(value);
}
if (JSON.isRawJSON(value)) {
return value.rawJSON;
}
const subIndent = `${indent} `;
if (Array.isArray(value)) {
return `- ${value.map((v) => mySerializer(v, subIndent)).join(`\n${indent}- `)}`;
}
return Object.entries(value)
.map(([key, value]) => {
const subValue = mySerializer(value, subIndent);
if (subValue.includes("\n")) {
return `${key}:\n${subIndent}${subValue}`;
}
return `${key}: ${subValue}`;
})
.join(`\n${indent}`);
}
console.log(
mySerializer({
name: "Josh",
userId: JSON.rawJSON("12345678901234567890"),
friends: [
{ name: "Alice", userId: JSON.rawJSON("9876543210987654321") },
{ name: "Bob", userId: JSON.rawJSON("56789012345678901234") },
],
}),
);
// name: "Josh"
// userId: 12345678901234567890
// friends:
// - name: "Alice"
// userId: 9876543210987654321
// - name: "Bob"
// userId: 56789012345678901234
Wenn die userId-Werte im obigen Beispiel nicht mit JSON.rawJSON() erstellt, sondern direkt als Zahlen übergeben würden, käme es aufgrund der begrenzten Genauigkeit von JavaScript-Gleitkommazahlen bereits zu einem Genauigkeitsverlust.
console.log(
mySerializer({
name: "Josh",
userId: 12345678901234567890,
friends: [
{ name: "Alice", userId: 9876543210987654321 },
{ name: "Bob", userId: 56789012345678901234 },
],
}),
);
// name: "Josh"
// userId: 12345678901234567000
// friends:
// - name: "Alice"
// userId: 9876543210987655000
// - name: "Bob"
// userId: 56789012345678900000
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-json.israwjson> |