Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
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()

js
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.

js
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

Browser-Kompatibilität

Siehe auch