Serialisieren und Deserialisieren von JSON Datetime zwischen Python und JavaScript
Bei der Webentwicklung ist die Übertragung von Daten zwischen verschiedenen Systemen von entscheidender Bedeutung. Eine häufige Herausforderung entsteht beim Umgang mit Pythons datetime.datetime-Objekten in einem Kontext, in dem JSON als Datenaustauschformat verwendet wird, insbesondere in Szenarien mit Kommunikation mit JavaScript.
Um diese Herausforderung effektiv zu bewältigen, können Sie die Standardeinstellung nutzen Parameter der Funktion json.dumps. Indem Sie eine benutzerdefinierte date_handler-Funktion definieren und diese als Standardargument übergeben, können Sie steuern, wie datetime-Objekte in eine Form serialisiert werden, die JavaScript interpretieren kann.
Hier ist eine Beispielimplementierung der date_handler-Funktion:
<code class="python">date_handler = lambda obj: ( obj.isoformat() if isinstance(obj, (datetime.datetime, datetime.date)) else None )</code>
Diese Funktion prüft, ob das Objekt eine Instanz von datetime.datetime oder datetime.date ist, und gibt in diesem Fall die ISO 8601-formatierte Zeichenfolgendarstellung des Objekts zurück. Dieses Format ist mit dem nativen Date-Objekt von JavaScript kompatibel.
In JavaScript können Sie die empfangene JSON-Zeichenfolge, die das serialisierte Datum enthält, mit der Funktion JSON.parse analysieren, und das Date-Objekt kann aus der analysierten Datumszeichenfolge erstellt werden.
Um jedoch einen größeren Bereich komplexer Datentypen zu verarbeiten, benötigen Sie möglicherweise eine umfassendere Standard-Handler-Funktion wie die folgende:
<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>
Dieser erweiterte Handler prüft nicht nur auf Datum und Uhrzeit Objekte verarbeiten, aber bei Bedarf auch andere Datentypen verarbeiten.
Denken Sie daran, dass beim Senden von Datetime-Objekten an JavaScript diese in Zeichenfolgen serialisiert werden. JavaScript rekonstruiert dann Date-Objekte basierend auf diesen Zeichenfolgen. Das ISO 8601-Format gewährleistet Kompatibilität und ermöglicht einen bequemen und zuverlässigen Datenaustausch zwischen Python und JavaScript.
Das obige ist der detaillierte Inhalt vonWie serialisiere und deserialisiere ich JSON-Datumsangaben zwischen Python und JavaScript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!