Heim >Web-Frontend >js-Tutorial >Wie gehe ich mit Datetime-Objekten in JSON-Konvertierungen zwischen Python und JavaScript um?

Wie gehe ich mit Datetime-Objekten in JSON-Konvertierungen zwischen Python und JavaScript um?

Susan Sarandon
Susan SarandonOriginal
2024-10-19 17:29:30722Durchsuche

How to Handle Datetime Objects in JSON Conversions Between Python and JavaScript?

JSON-Datetime-Konvertierung zwischen Python und JavaScript

Beim Übertragen von Daten zwischen Python und JavaScript mithilfe von JSON sollte besonderes Augenmerk auf den Umgang mit Datetime-Objekten gelegt werden. In diesem Artikel wird der optimale Ansatz für die Serialisierung von Datetime-Objekten in Python und deren Deserialisierung in JavaScript untersucht.

Serialisierung in Python

Verwenden Sie den Standardparameter in Pythons json.dumps-Funktion, um die Datetime-Serialisierung zu handhaben:

<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"' (ISO 8601 format)</code>

Deserialisierung in JavaScript

Verwenden Sie in JavaScript die Funktion JSON.parse und verarbeiten Sie die Deserialisierung mit einer benutzerdefinierten Reviver-Funktion:

<code class="javascript">let date = JSON.parse(jsonString, (key, value) => {
  if (typeof value === 'string' && value.match(/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z$/)) {
    return new Date(value);
  }
  return value;
});</code>

Umfassender Standardhandler in Python

Eine umfassendere Standardhandlerfunktion kann definiert werden, um verschiedene Datentypen zu berücksichtigen:

<code class="python">import datetime

def handler(obj):
    if hasattr(obj, 'isoformat'):
        return obj.isoformat()
    elif isinstance(obj, datetime.date):
        return str(obj)  # Convert to string for date objects
    elif isinstance(obj, ...):
        return ...  # Handle other types as needed
    else:
        raise TypeError('Cannot serialize object of type {} with value {}'.format(type(obj), repr(obj)))</code>

Verbesserter Standardhandler

Der verbesserte Handler umfasst:

  • Verarbeitung von Datum/Uhrzeit- und Datumsobjekten
  • Ausgabe von Typ und Wert bei Begegnung mit einem nicht serialisierbaren Objekt

Das obige ist der detaillierte Inhalt vonWie gehe ich mit Datetime-Objekten in JSON-Konvertierungen zwischen Python und JavaScript um?. 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