JSON Type Representation

JSON ist ein praktisches und weit verbreitetes Format zur Serialisierung von Objekten, Arrays, Zahlen, Strings, Booleans und Null-Werten. JSON unterstützt nicht alle durch JavaScript erlaubten Datentypen, was bedeutet, dass JavaScript-Objekte, welche diese inkompatiblen Typen verwenden, nicht direkt in JSON serialisiert werden können.

Die JSON-Typ-Repräsentation eines JSON-inkompatiblen Objekts ist ein äquivalentes JavaScript-Objekt mit Eigenschaften, die so kodiert sind, dass die Informationen serialisiert werden können. Typischerweise hat es dieselben Eigenschaften wie das ursprüngliche Objekt für kompatible Datentypen, während inkompatible Eigenschaften in kompatible Typen umgewandelt/serialisiert werden. Zum Beispiel könnten Puffer-Eigenschaften im ursprünglichen Objekt in der JSON-Typ-Repräsentation base64url-kodiert als Strings dargestellt werden.

Ein Objekt, das nicht automatisch mit der Methode JSON.stringify() in JSON serialisiert werden kann, kann eine Instanzmethode namens toJSON() definieren, die die JSON-Typ-Repräsentation des ursprünglichen Objekts zurückgibt. JSON.stringify() wird dann toJSON() verwenden, um das Objekt zur Serialisierung zu erhalten, anstatt des ursprünglichen Objekts. PublicKeyCredential.toJSON() und Performance.toJSON() sind Beispiele für diesen Ansatz.

Ein so serialisierter JSON-String kann mithilfe von JSON.parse() wieder in das JSON-Typ-Repräsentation-Objekt deserialisiert werden. Es ist üblich, eine Konverter-Methode bereitzustellen, wie etwa PublicKeyCredential.parseCreationOptionsFromJSON(), um die JSON-Typ-Repräsentation zurück in das ursprüngliche Objekt zu konvertieren.