Date.prototype.toJSON()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
Die toJSON()
Methode von Date
Instanzen gibt einen String zurück, der dieses Datum im gleichen ISO-Format wie toISOString()
darstellt.
Probieren Sie es aus
Syntax
toJSON()
Parameter
Keine.
Rückgabewert
Ein String, der das angegebene Datum im Datum-Zeit-Format gemäß der Weltzeit darstellt, oder null
, wenn das Datum ungültig ist. Für gültige Daten ist der Rückgabewert derselbe wie bei toISOString()
.
Beschreibung
Die toJSON()
Methode wird automatisch von JSON.stringify()
aufgerufen, wenn ein Date
Objekt in einen String umgewandelt wird. Diese Methode ist im Allgemeinen dazu gedacht, dass Date
Objekte während der JSON Serialisierung standardmäßig sinnvoll serialisiert werden, und können dann unter Verwendung des Date()
Konstruktors als Wiederhersteller von JSON.parse()
deserialisiert werden.
Die Methode versucht zunächst, ihren this
Wert in einen primitiven Wert umzuwandeln, indem sie in dieser Reihenfolge ihre [Symbol.toPrimitive]()
(mit "number"
als Hinweis), valueOf()
und toString()
Methoden aufruft. 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, 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 überprüft, ob der this
Wert ein gültiges Date
Objekt ist. Das Aufrufen von Date.prototype.toJSON()
auf Nicht-Date
Objekten schlägt fehl, es sei denn, die nummerische primitive Darstellung des Objekts ist NaN
, oder das Objekt hat ebenfalls eine toISOString()
Methode.
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 Deserialisierung
Beim Parsen von JSON, das Datums-Strings enthält, können Sie den Date()
Konstruktor verwenden, um sie in die ursprünglichen Datum-Objekte zurückzuverwandeln.
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 Wiederhersteller von JSON.parse()
muss spezifisch für die erwartete Nutzlaststruktur sein, da die Serialisierung irreversibel ist: Es ist nicht möglich, zwischen einem String, der ein Datum darstellt, und einem normalen String zu unterscheiden.
Spezifikationen
Specification |
---|
ECMAScript Language Specification # sec-date.prototype.tojson |
Browser-Kompatibilität
BCD tables only load in the browser