Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich Datetime-Objekte in JSON zwischen Python und JavaScript sicher serialisieren und deserialisieren?

Wie kann ich Datetime-Objekte in JSON zwischen Python und JavaScript sicher serialisieren und deserialisieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-20 19:12:02401Durchsuche

How to Safely Serialize and Deserialize Datetime Objects in JSON between Python and JavaScript?

Datetime-Objekte zwischen Python und JavaScript mit JSON serialisieren und deserialisieren

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.

Serialisierung in Python

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.

Deserialisierung in JavaScript

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>

Umfassender Standardhandler

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!

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