Есть ли какой-нибудь элегантный способ сделать так, чтобы кодер Python JSON поддерживал datetime? какой-то сторонний модуль или легкий взлом?
Я использую обертку базы данных торнадо, чтобы получить несколько строк из базы данных для создания JSON. Результат запроса включает в себя обычный столбец метки времени MySQL.
Довольно досадно, что кодировщик json по умолчанию в Python не поддерживает свой собственный тип datetime, который так часто встречается во всех видах запросов к базе данных.
Я не хочу изменять собственный кодер json Python. любая хорошая практика? Большое спасибо!
PS: я нашел грязный взлом, изменив метод кодировщика Python JSON по умолчанию:
Изменить:
def default(self, o):
raise TypeError(repr(o) + " is not JSON serializable")
Для того, чтобы:
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")
ну, это будет временное решение только для среды разработки.
Но для долгосрочного решения или продакшен среды это довольно уродливо, и мне приходится вносить изменения каждый раз, когда я развертываюсь на новом сервере.
Есть ли способ лучше? Я не хочу изменять ни сам код Python, ни исходный код Tornado. Есть ли что-то, что я могу сделать с моим собственным кодом проекта, чтобы это произошло? желательно в одном темпе.
Большое спасибо!