Date.prototype.toJSON()
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Die Methode toJSON() von Date-Instanzen gibt einen String zurück, der das Datum im selben ISO-Format wie toISOString() darstellt.
Probieren Sie es aus
const event = new Date("August 19, 1975 23:15:30 UTC");
const jsonDate = event.toJSON();
console.log(jsonDate);
// Expected output: "1975-08-19T23:15:30.000Z"
console.log(new Date(jsonDate).toUTCString());
// Expected output: "Tue, 19 Aug 1975 23:15:30 GMT"
Syntax
toJSON()
Parameter
Keine.
Rückgabewert
Ein String, der das angegebene Datum gemäß der Weltzeit im Format für Datums- und Uhrzeitangaben darstellt, oder null, wenn das Datum ungültig ist. Bei gültigen Datumsangaben entspricht der Rückgabewert dem von toISOString().
Beschreibung
Die Methode toJSON() wird automatisch von JSON.stringify() aufgerufen, wenn ein Date-Objekt in einen String umgewandelt wird. Die Methode dient im Allgemeinen dazu, Date-Objekte bei der JSON-Serialisierung standardmäßig sinnvoll zu serialisieren. Anschließend können sie mithilfe des Konstruktors Date() innerhalb des Revivers von JSON.parse() deserialisiert werden.
Die Methode versucht zunächst, ihren this-Wert in einen primitiven Wert umzuwandeln. Dazu ruft sie der Reihe nach dessen Methoden [Symbol.toPrimitive]() (mit "number" als Hinweis), valueOf() und toString() auf. Ist das Ergebnis eine nicht endliche Zahl, wird null zurückgegeben. (Dies entspricht im Allgemeinen einem ungültigen Datum, dessen valueOf() den Wert NaN zurückgibt.) Andernfalls, wenn der umgewandelte primitive Wert keine Zahl oder eine endliche Zahl ist, wird der Rückgabewert von this.toISOString() zurückgegeben.
Beachten Sie, dass die Methode nicht prüft, ob der this-Wert ein gültiges Date-Objekt ist. Der Aufruf von Date.prototype.toJSON() für Objekte, die keine Date-Objekte sind, schlägt jedoch fehl, sofern die primitive Zahlendarstellung des Objekts nicht NaN ist oder das Objekt nicht ebenfalls eine Methode toISOString() besitzt.
Beispiele
>Verwendung von toJSON()
const jsonDate = new Date(0).toJSON(); // '1970-01-01T00:00:00.000Z'
const backToDate = new Date(jsonDate);
console.log(jsonDate); // 1970-01-01T00:00:00.000Z
Serialisierung und anschließende Deserialisierung
Wenn Sie JSON mit Datums-Strings parsen, können Sie diese mit dem Konstruktor Date() wieder in die ursprünglichen Datumsobjekte umwandeln.
const fileData = {
author: "Maria",
title: "Date.prototype.toJSON()",
createdAt: new Date(2019, 3, 15),
updatedAt: new Date(2020, 6, 26),
};
const response = JSON.stringify(fileData);
// Imagine transmission through network
const data = JSON.parse(response, (key, value) => {
if (key === "createdAt" || key === "updatedAt") {
return new Date(value);
}
return value;
});
console.log(data);
Hinweis:
Der Reviver von JSON.parse() muss auf die erwartete Struktur der Daten abgestimmt sein, da die Serialisierung unumkehrbar ist: Ein String, der ein Datum darstellt, lässt sich nicht von einem gewöhnlichen String unterscheiden.
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype.tojson> |