Мое решение на данный момент:
>>> json_string = '{"last_updated": {"$gte": "Thu, 1 Mar 2012 10:00:49 UTC"}}'
>>> dct = json.loads(json_string, object_hook=datetime_parser)
>>> dct
{u'last_updated': {u'$gte': datetime.datetime(2012, 3, 1, 10, 0, 49)}}
def datetime_parser(dct):
for k, v in dct.items():
if isinstance(v, basestring) and re.search("\ UTC", v):
try:
dct[k] = datetime.datetime.strptime(v, DATE_FORMAT)
except:
pass
return dct
Для получения дополнительной информации об использовании object_hook: Кодер и декодер JSON
В моем случае приходит строка jsonот запроса GET к моему REST API.Это решение позволяет мне прозрачно «получить правильную дату», не вынуждая клиентов и пользователей использовать префиксы жесткого кодирования, такие как __date__
в JSON, при условии, что входная строка соответствует DATE_FORMAT, а именно:
DATE_FORMAT = '%a, %d %b %Y %H:%M:%S UTC'
Шаблон регулярных выражений, вероятно, следует дополнительно уточнить
PS: если вам интересно, json_string - это запрос MongoDB / PyMongo.