JSON Datetime zwischen Python und JavaScript
Der Austausch von Datetime-Objekten zwischen Python und JavaScript mithilfe von JSON kann aufgrund der Unterschiede in ihren jeweiligen Datums- und Uhrzeitobjekten eine Herausforderung sein Zeitformate. Um dies zu beheben, können wir benutzerdefinierte JSON-Serialisierungs- und Deserialisierungs-Handler implementieren.
In Python können Sie eine Serialisierungs-Handler-Funktion mithilfe des Standardparameters in der Funktion json.dumps definieren. Dieser Handler wird immer dann aufgerufen, wenn während der Serialisierung ein Datetime-Objekt angetroffen wird. Der folgende Codeausschnitt zeigt, wie man einen Handler für Datetime-Objekte erstellt, der sie in das ISO 8601-Format konvertiert:
date_handler = lambda obj: (
obj.isoformat()
if isinstance(obj, (datetime.datetime, datetime.date))
else None
)
json.dumps(datetime.datetime.now(), default=date_handler)
Dies gibt das Datetime-Objekt als Zeichenfolge im ISO 8601-Format aus:
"2010-04-20T20:08:21.634121"
In JavaScript können Sie eine benutzerdefinierte Deserialisierung verwenden Handler, um die empfangene ISO 8601-Zeichenfolge zurück in ein Datetime-Objekt zu konvertieren. Eine umfassende Deserialisierungshandlerfunktion könnte wie folgt aussehen:
function handler(obj) {
if (typeof obj === 'string') {
if (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/.test(obj)) {
// ISO 8601 Date string
return new Date(obj);
}
}
return obj;
}
Durch die Verwendung dieser benutzerdefinierten Handler können Sie Datetime-Objekte nahtlos zwischen Python und JavaScript mithilfe von JSON austauschen und so die Kompatibilität zwischen den beiden Plattformen sicherstellen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3