JSON-Typdarstellung

JSON ist ein praktisches und weit verbreitetes Format zum Serialisieren von Objekten, Arrays, Zahlen, Zeichenfolgen, Boolesche Werten und null. JSON unterstützt nicht alle von JavaScript erlaubten Datentypen, was bedeutet, dass JavaScript-Objekte, die diese inkompatiblen Typen verwenden, nicht direkt in JSON serialisiert werden können.

Die JSON-Typdarstellung eines JSON-inkompatiblen Objekts ist ein äquivalentes JavaScript-Objekt mit so codierten Eigenschaften, dass die Informationen in JSON serialisiert werden können. In der Regel hat es dieselben Eigenschaften wie das ursprüngliche Objekt für kompatible Datentypen, während inkompatible Eigenschaften in kompatible Typen konvertiert/serialisiert werden. Zum Beispiel könnten Puffereigenschaften im ursprünglichen Objekt in der JSON-Typdarstellung base64url-codiert als Zeichenfolgen dargestellt werden.

Ein Objekt, das nicht automatisch mit der Methode JSON.stringify() in JSON serialisiert werden kann, kann eine Instanzmethode mit dem Namen toJSON() definieren, die die JSON-Typdarstellung des ursprünglichen Objekts zurückgibt. JSON.stringify() wird dann toJSON() verwenden, um das Objekt zu erhalten, das zu serialisieren ist, anstatt das ursprüngliche Objekt. PublicKeyCredential.toJSON() und Performance.toJSON() sind Beispiele für diesen Ansatz.

Ein auf diese Weise serialisierter JSON-String kann mit JSON.parse() in das JSON-Typdarstellungs-Objekt deserialisiert werden. Es ist üblich, eine Konverter-Methode bereitzustellen, wie z.B. PublicKeyCredential.parseCreationOptionsFromJSON(), um die JSON-Typdarstellung zurück in das ursprüngliche Objekt zu konvertieren.