Bewahrung der Datetime-Kontinuität zwischen Python und JavaScript über JSON
Bevor wir uns an die Lösung wagen, wollen wir zunächst das Problem verstehen. Wir haben ein datetime.datetime-Objekt in Python, das serialisiert und über JSON an JavaScript gesendet werden muss. Bei der Ankunft muss JavaScript in der Lage sein, es ohne Verzerrungen wieder in ein Datetime-Objekt zu deserialisieren.
Um dieses Rätsel zu lösen, bietet der vielseitige „Standard“-Parameter von JSON in json.dumps eine Lösung. Mit diesem Parameter können wir einen benutzerdefinierten Serialisierungshandler für unsere Datetime-Objekte definieren.
Der folgende Handler wickelt den Serialisierungsprozess sauber ab:
<code class="python">date_handler = lambda obj: ( obj.isoformat() if isinstance(obj, (datetime.datetime, datetime.date)) else None )</code>
Bei Anwendung konvertiert dieser Handler Datetime-Objekte in das ISO 8601-Format während der Serialisierung:
<code class="python">json.dumps(datetime.datetime.now(), default=date_handler) '"2010-04-20T20:08:21.634121"'</code>
Für komplexere Szenarien wird ein umfassender Handler empfohlen:
<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 Handler generiert außerdem eine verbesserte Fehlermeldung mit dem Typ und Wert des Objekts für ein besseres Debugging. Durch die Einbindung eines Datumstyps wird sichergestellt, dass auch Datumsangaben ordnungsgemäß behandelt werden.
Das obige ist der detaillierte Inhalt vonWie kann die Datetime-Kontinuität zwischen Python und JavaScript über JSON gewahrt werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!