Die Methode Date.prototype.toJSON() wird automatisch von JSON.stringify() aufgerufen, wenn ein Date-Objekt serialisiert werden soll. Sie liefert das Datum als ISO-8601-konformen String zurück und ist im Wesentlichen ein dünner Wrapper um toISOString(). Ihre Existenz erklärt, warum Daten in JSON-Antworten standardmäßig im UTC-ISO-Format auftauchen und nicht etwa als Unix-Zeitstempel oder als nicht maschinenlesbares toString()-Format.

Funktionsweise

toJSON() ist Teil eines Patterns, das JSON.stringify() allgemein verwendet: Wenn ein zu serialisierendes Objekt eine Methode namens toJSON besitzt, wird sie aufgerufen und ihr Rückgabewert anstelle des Objekts serialisiert.

Bei einem Date-Objekt liefert toJSON():

  • Gültiges Datum: Den UTC-ISO-String wie toISOString().
  • Ungültiges Datum: null (im Gegensatz zu toISOString(), die einen RangeError werfen würde).

Diese Sonderbehandlung für ungültige Daten ist absichtlich: JSON kennt keinen „Invalid Date”-Wert, und eine Exception mitten im Serialisierungsvorgang wäre unangenehm. Mit null bleibt die JSON-Ausgabe stabil.

Syntax

JavaScript Syntax
date.toJSON()
date.toJSON(key)
Parameter
key

(Optional, wird nicht verwendet) Ein Parameter, der von JSON.stringify() automatisch übergeben wird – der Schlüssel der aktuellen Property im Objekt. Wird von der Date-Implementierung ignoriert.

Rückgabewert

Ein String im ISO-8601-Format. Bei einem ungültigen Date-Objekt wird null zurückgegeben.

Beispiele

Direktaufruf

JavaScript Beispiel
const date = new Date("2026-05-01T14:30:00.000Z");
console.log(date.toJSON());
Output
2026-05-01T14:30:00.000Z

Automatischer Aufruf durch JSON.stringify()

JavaScript Beispiel
const event = {
    id: 42,
    zeitpunkt: new Date("2026-05-01T14:30:00Z")
};

console.log(JSON.stringify(event));
Output
{"id":42,"zeitpunkt":"2026-05-01T14:30:00.000Z"}

Ungültiges Datum liefert null

JavaScript Beispiel
const invalid = new Date("kein Datum");
console.log(invalid.toJSON());
console.log(JSON.stringify({ d: invalid }));
Output
null
{"d":null}

Round-Trip durch JSON

JavaScript Beispiel
const original = { ts: new Date("2026-05-01T14:30:00.000Z") };
const json = JSON.stringify(original);
const parsed = JSON.parse(json);

// parsed.ts ist ein String, kein Date - manuelle Re-Hydratation nötig
const reHydrated = { ...parsed, ts: new Date(parsed.ts) };
console.log(reHydrated.ts.getTime() === original.ts.getTime());
Output
true

Hinweise & verwandte Methoden

  • toJSON() wird niemals manuell aufgerufen – nutze stattdessen JSON.stringify() oder, wenn nur der ISO-String gebraucht wird, direkt toISOString().
  • Beim Deserialisieren mit JSON.parse() wird ein Date-String nicht automatisch zurück in ein Date-Objekt verwandelt – das Ergebnis ist ein String. Für die Re-Hydratation eignet sich der reviver-Parameter von JSON.parse().
  • Der Unterschied zu toISOString(): toJSON() wirft bei ungültigem Datum kein Error, sondern liefert null. Das ist sicherer beim Serialisieren ganzer Objekt-Bäume.
  • Eigene Klassen können diesem Muster folgen: Eine Methode toJSON() auf einer Instanz wird automatisch von JSON.stringify() aufgerufen.
/ Weiter

Zurück zu Date

Zur Übersicht