gpt4 book ai didi

python使用json序列化datetime类型实例解析

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 28 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章python使用json序列化datetime类型实例解析由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

使用python的json模块序列化时间或者其他不支持的类型时会抛异常,例如下面的代码:

?
1
2
3
4
5
6
7
8
# -*- coding: cp936 -*-
from datetime import datetime
 
import json
 
if __name__ = = '__main__' :
  now = datetime.now()
  json.dumps({ 'now' :now})

运行会出现下面的错误信息:

?
1
2
3
4
5
6
7
8
9
10
11
12
Traceback (most recent call last):
  File "C:\Users\xx\Desktop\t.py" , line 8 , in <module>
   json.dumps({ 'now' :now})
  File "C:\Python27\lib\json\__init__.py" , line 231 , in dumps
   return _default_encoder.encode(obj)
  File "C:\Python27\lib\json\encoder.py" , line 201 , in encode
   chunks = self .iterencode(o, _one_shot = True )
  File "C:\Python27\lib\json\encoder.py" , line 264 , in iterencode
   return _iterencode(o, 0 )
  File "C:\Python27\lib\json\encoder.py" , line 178 , in default
   raise TypeError( repr (o) + " is not JSON serializable" )
TypeError: datetime.datetime( 2012 , 12 , 26 , 11 , 51 , 33 , 409000 ) is not JSON serializable

意思是说datetime类不支持Json序列化 。

我们需要对json做下扩展,让它可以支持datetime类型.

?
1
2
3
4
5
6
7
8
class ComplexEncoder(json.JSONEncoder):
   def default( self , obj):
     if isinstance (obj, datetime):
       return obj.strftime( '%Y-%m-%d %H:%M:%S' )
     elif isinstance (obj, date):
       return obj.strftime( '%Y-%m-%d' )
     else :
       return json.JSONEncoder.default( self , obj)

在调用json.dumps时需要指定cls参数为ComplexEncoder 。

例如:

?
1
json.dumps({ 'now' :now}, cls = ComplexEncoder)

总结 。

以上就是本文关于python使用json序列化datetime类型实例解析的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持! 。

原文链接:http://blog.csdn.net/junli_chen/article/details/78133003 。

最后此篇关于python使用json序列化datetime类型实例解析的文章就讲到这里了,如果你想了解更多关于python使用json序列化datetime类型实例解析的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com