Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten.Erfahre mehr über dieses Experiment.
JSON.isRawJSON()
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
DieJSON.isRawJSON() statische Methode prüft, ob ein Wert ein vonJSON.rawJSON() zurückgegebenes Objekt ist.
In diesem Artikel
Syntax
JSON.isRawJSON(value)Parameter
valueDer Wert, der getestet werden soll.
Rückgabewert
true, wennvalue durchJSON.rawJSON() erstellt wurde; andernfallsfalse.
Beschreibung
„Roh-JSON“-Objekte werden bei der Serialisierung nach JSON so behandelt, als ob sie bereits ein Stück JSON sind. Darüber hinaus ist das rohe JSON aufgrund der Funktionsweise vonJSON.rawJSON() garantiert syntaktisch gültiges JSON. Weitere Informationen zur Struktur und zum Verhalten von Roh-JSON-Objekten finden Sie unterJSON.rawJSON(). Diese Methode existiert, um anderen Serialisierungsbibliotheken zu ermöglichen, ein ähnliches Verhalten wieJSON.stringify() für Roh-JSON-Objekte zu implementieren.
Beispiele
>Verwendung von JSON.isRawJSON()
Das folgende Beispiel zeigt, wieJSON.isRawJSON() verwendet wird, um zu testen, ob ein Objekt vonJSON.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: 56789012345678901234Wenn in dem obigen Beispiel dieuserId-Werte nicht durchJSON.rawJSON() erstellt, sondern direkt als Zahlen übergeben würden, dann kommt es aufgrund von JS-Fließkomma-Präzisionsbeschränkungen zu einem Präzisionsverlust.
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: 56789012345678900000Spezifikationen
| Specification |
|---|
| JSON.parse source text access> # sec-json.israwjson> |