Bei der Arbeit mit JSON kann es vorkommen, dass Datetime-Objekte zwischen Python und JavaScript übertragen werden müssen. Die Serialisierung solcher Objekte kann schwierig sein. In diesem Artikel werden die Best Practices für den Umgang mit Datetime-Objekten in der JSON-Kommunikation untersucht.
Um ein datetime.datetime-Objekt in Python zu serialisieren, können wir die Funktion json.dumps mit der Standardeinstellung verwenden Parameter. Mit diesem Parameter können wir einen benutzerdefinierten Handler angeben, um das Datetime-Objekt in ein JSON-serialisierbares Format zu konvertieren.
<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) # Output: '"2010-04-20T20:08:21.634121"'</code>
Die isoformat()-Methode des Datetime-Objekts gibt eine Zeichenfolgendarstellung im ISO 8601-Format zurück allgemein anerkannt.
In JavaScript können Sie die serialisierte Datums-/Uhrzeitzeichenfolge mit der Funktion Date.parse() wieder in ein Date-Objekt deserialisieren:
<code class="javascript">const dateString = '"2010-04-20T20:08:21.634121"'; const date = new Date(Date.parse(dateString)); // Output: Thu Apr 20 2010 20:08:21 GMT-0400 (Eastern Daylight Time)</code>
Für komplexere Szenarien benötigen Sie möglicherweise eine umfassendere Standardhandlerfunktion:
<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 kann mehrere Objekttypen verarbeiten und liefert informativere Fehlermeldungen. Denken Sie daran, sowohl Datums- als auch Datums-/Uhrzeitobjekte nach Bedarf zu behandeln.
Das obige ist der detaillierte Inhalt vonWie kann ich Datetime-Objekte in JSON zwischen Python und JavaScript sicher serialisieren und deserialisieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!