Heim  >  Artikel  >  Web-Frontend  >  Umgang mit Datetime-Objekten im JSON-Austausch zwischen Python und JavaScript

Umgang mit Datetime-Objekten im JSON-Austausch zwischen Python und JavaScript

Susan Sarandon
Susan SarandonOriginal
2024-10-19 17:30:30487Durchsuche

How to Handle Datetime Objects in JSON Exchange Between Python and JavaScript

Umgang mit Datetime-Objekten im JSON-Austausch zwischen Python und JavaScript

Beim Austausch von Datetime-Objekten zwischen Python und JavaScript mithilfe von JSON besteht eine Herausforderung auf die unterschiedliche Art und Weise, wie die beiden Sprachen Datum und Uhrzeit darstellen. In diesem Artikel wird die beste Vorgehensweise für diese Aufgabe vorgestellt.

Python-zu-JavaScript-Konvertierung

Um ein datetime.datetime-Objekt in Python für die JSON-Übertragung zu serialisieren, verwenden Sie „ default'-Parameter der json.dumps-Funktion mit einer benutzerdefinierten Datumshandlerfunktion:

<code class="python">date_handler = lambda obj: (
    obj.isoformat()
    if isinstance(obj, (datetime.datetime, datetime.date))
    else None
)
json.dumps(datetime.datetime.now(), default=date_handler)</code>

Diese Funktion gibt das ISO 8601-Format des datetime-Objekts zurück, was ein weithin akzeptierter Standard für die Darstellung von Datum und Uhrzeit ist.

JavaScript-zu-Python-Konvertierung

In JavaScript können Sie die empfangene JSON-Zeichenfolge mit einer benutzerdefinierten Datumswiederherstellungsfunktion deserialisieren. Diese Funktion analysiert die ISO 8601-Zeichenfolge und rekonstruiert das Datetime-Objekt:

<code class="javascript">let date_reviver = date => new Date(date);
JSON.parse(json_string, date_reviver);</code>

Umfassender Datumshandler

Für einen umfassenderen Ansatz können Sie ein benutzerdefiniertes Datum erstellen Handlerfunktion, die mehrere Datentypen abdeckt:

<code class="python">def handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    elif isinstance(obj, ...):
        return ...
    else:
        raise TypeError, 'Object of type %s with value of %s is not JSON serializable' % (type(obj), repr(obj))</code>

Diese Funktion stellt sicher, dass verschiedene Objekttypen während der Serialisierung angemessen behandelt werden.

Zusätzliche Hinweise

  • Das für Datetime-Objekte verwendete ISO 8601-Format ist ISO 8601.
  • Dieser Ansatz kann auch Datumsobjekte (datetime.date) in Python verarbeiten.

Das obige ist der detaillierte Inhalt vonUmgang mit Datetime-Objekten im JSON-Austausch zwischen Python und JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn