Chr*_*row 1 python datetime json python-2.7
有一些我想使用 JSON 序列化的嵌套对象。问题是某些属性包含datetime
s。当我尝试序列化这些 pbjects 时,Python 抛出异常:
TypeError: datetime.datetime(2012, 6, 5, 17, 49, 35, 672115) 不是 JSON 可序列化的
使用 Python 2.7,有没有办法告诉 json 序列化器:“当你看到日期时间时,不要烦人并抛出异常,只需使用以下方法进行序列化:property.strftime('%Y-%m-%d %I:%M%p')
”
谢谢!
你要定义一个辅助函数,将序列化datetime
对象,并使用default
kwarg的那样json.dump或json.dumps。查看带有重复答案链接的评论。
此外,您还需要考虑是否支持时区感知datetime
对象。以及您是要在序列化期间保留时区还是在序列化之前仅转换为 UTC。
这是一个示例,假设您要在序列化之前转换为 UTC。它依赖于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'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5669 次 |
最近记录: |