到目前为止我的解决方案:
>>> 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查询。



