Manejo de objetos de fecha y hora en JSON entre Python y JavaScript
Al intercambiar datos entre Python y JavaScript, es común encontrar objetos de fecha y hora. Para garantizar una serialización y deserialización perfectas de estos objetos, se pueden emplear varios enfoques.
Un método recomendado implica utilizar el parámetro 'predeterminado' de json.dumps en Python para manejar objetos de fecha y hora. Este parámetro habilita la especificación de una función de controlador que convierte los objetos de fecha y hora en un formato serializable.
from datetime import datetime
date_handler = lambda obj: (
obj.isoformat()
if isinstance(obj, (datetime.datetime, datetime.date))
else None
)
json_str = json.dumps(datetime.datetime.now(), default=date_handler)
print(json_str)
Este enfoque garantiza que los objetos de fecha y hora de Python se conviertan al formato ISO 8601, que está estandarizado y reconocido por JavaScript.
"2010-04-20T20:08:21.634121"
Como alternativa, se puede definir una función de controlador predeterminada más completa para manejar varios objetos. tipos:
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))
Esta función verifica la presencia de un atributo de 'isoformato', que es común en objetos de fecha y hora y lo convierte a un formato serializable. Además, maneja otros tipos de objetos según sea necesario.
Al aprovechar estas técnicas, los objetos de fecha y hora pueden serializarse eficientemente desde Python y deserializarse en JavaScript, lo que facilita el intercambio de datos sin problemas entre los dos lenguajes.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3