¿Hay alguna manera elegante de hacer que Python JSON encoder sea compatible con datetime? algún módulo de terceros o hack fácil?Python, codificador JSON para admitir datetime?
Estoy usando la envoltura de la base de datos de tornado para buscar algunas raws de db para generar un json. El resultado de la consulta incluye una columna regular de timestamp de MySQL.
Es bastante molesto que el codificador json predeterminado de Python no admita su propio tipo de fecha y hora, que es tan común en todo tipo de consultas de bases de datos.
No quiero modificar el propio codificador json de Python. alguna buena práctica? ¡Muchas gracias!
PS: He encontrado un truco sucio modificando el método por defecto codificador Python JSON:
Cambio:
def default(self, o):
raise TypeError(repr(o) + " is not JSON serializable")
Para:
def default(self, o):
from datetime import date
from datetime import datetime
if isinstance(o, datetime):
return o.isoformat()
elif isinstance(o, date):
return o.isoformat()
else:
raise TypeError(repr(o) + " is not JSON serializable")
así, será una solución temporal solo para el entorno dev.
Pero para una solución a largo plazo o un entorno de producción, esto es bastante feo, y tengo que hacer la modificación cada vez que despliegue en un nuevo servidor.
¿Hay una manera mejor? No quiero modificar el código de Python en sí, ni el código fuente de Tornado. ¿Hay algo que pueda hacer con mi propio código de proyecto para que esto suceda? preferiblemente en un ritmo.
¡Muchas gracias!
Ver: http://stackoverflow.com/questions/455580/json-datetime-between-python-and-javascript –
el problema con el método de la subclase, es que falla para toda la otros usos de La codificación json, como django simple, "dumpdata" – mcr