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 dieses 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 im Datums- und Zeitzeichenfolgenformat gemäß der Weltzeit darstellt, oder null, wenn das Datum ungültig ist. Bei gültigen Datumsangaben entspricht der Rückgabewert dem von toISOString().
Beschreibung
Die Methode wird automatisch von JSON.stringify() aufgerufen, wenn bei der JSON-Serialisierung ein Date-Objekt vorkommt. Der serialisierte Wert kann anschließend mithilfe des Konstruktors Date() im Reviver von JSON.parse() deserialisiert werden.
Die Methode versucht zunächst, ihren this-Wert in einen primitiven Wert umzuwandeln. Dazu ruft sie der Reihe nach die Methoden [Symbol.toPrimitive]() (mit "number" als Hint), valueOf() und toString() auf. Wenn das Ergebnis eine nicht endliche Zahl ist, wird null zurückgegeben. (Dies entspricht im Allgemeinen einem ungültigen Datum, dessen valueOf() NaN zurückgibt.) Andernfalls wird, wenn der umgewandelte primitive Wert keine Zahl oder eine endliche Zahl ist, 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 über eine Methode toISOString() verfügt.
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 Wiederherstellung
Wenn Sie JSON mit Datumszeichenfolgen 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 zugeschnitten sein, da die Serialisierung nicht umkehrbar ist: Es ist nicht möglich, zwischen einem String, der ein Datum darstellt, und einem gewöhnlichen String zu unterscheiden.
Spezifikationen
| Spezifikation |
|---|
| ECMAScript® 2027 Language Specification> # sec-date.prototype.tojson> |