有一些我想使用 JSON 序列化的嵌套对象。问题是某些属性包含datetime
s。当我尝试序列化这些 pbject 时,Python 抛出异常:
TypeError: datetime.datetime(2012, 6, 5, 17, 49, 35, 672115) is not JSON serializable
使用Python 2.7,有没有办法告诉json序列化器:“当你看到日期时间时,不要烦人并抛出异常,只需使用以下序列化:property.strftime('%Y-%m-%d %I:%M%p')
"
Thanks!
您需要定义一个辅助函数来序列化datetime
对象,并使用default
夸格的json转储 http://docs.python.org/library/json.html#json.dump或 json.dumps。请参阅带有重复答案链接的评论。
此外,您还需要考虑是否支持时区感知datetime
对象。以及您是否想在序列化期间保留时区,或者只是在序列化之前转换为 UTC。
下面的示例假设您希望在序列化之前转换为 UTC。它依赖于python-dateutil http://labix.org/python-dateutil图书馆:
from dateutil.tz import tzutc
UTC = tzutc()
def serialize_date(dt):
"""
Serialize a date/time value into an ISO8601 text representation
adjusted (if needed) to UTC timezone.
For instance:
>>> serialize_date(datetime(2012, 4, 10, 22, 38, 20, 604391))
'2012-04-10T22:38:20.604391Z'
"""
if dt.tzinfo:
dt = dt.astimezone(UTC).replace(tzinfo=None)
return dt.isoformat() + 'Z'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)