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

  介绍

这篇文章主要介绍python如何使用json序列化datetime类型实例解析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

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

#, - *安康;编码:cp936  - * -   得到datetime  import  datetime      import  json      if  __name__==& # 39; __main__ # 39;:   ,你=,datetime.now ()   ,json.dumps({& # 39;现在# 39;:现在})

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

Traceback  (most  recent  call 最后):   用户,File “C: \ \ xx \桌面\ t.py",, line  8日,拷贝& lt; module>   json.dumps才能({& # 39;现在# 39;:现在})   ,File “C: \ Python27 \ lib \ json \ __init__.py",, line  231年,转储文件拷贝   return 才能_default_encoder.encode (obj)   ,File “C: \ Python27 \ lib \ json \ encoder.py",, line  201年,拷贝编码   时间=chunks 才能;self.iterencode (o,, _one_shot=True)   ,File “C: \ Python27 \ lib \ json \ encoder.py",, line  264年,iterencode拷贝   return 才能;_iterencode (o,, 0)   ,File “C: \ Python27 \ lib \ json \ encoder.py",, line  178年,默认的拷贝   raise 才能;TypeError (repr (o), +,“, is  not  JSON  serializable")   TypeError: datetime.datetime(2012, 12日,26日,11日,51岁,33岁,409000),is  not  JSON 可序列化的

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

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

class  ComplexEncoder (json.JSONEncoder):   def 才能;违约(自我,,obj):   ,,,if  isinstance (obj, datetime):   ,,,,,return  obj.strftime (& # 39; Y % - % - % d  % H: % m: % & # 39;)   ,,,elif  isinstance (obj,日期):   ,,,,,return  obj.strftime (& # 39; Y - % - % d % # 39;)   ,,,:   ,,,,,return  json.JSONEncoder.default(自我,,obj)

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

例如:

json.dumps({& # 39;现在# 39;:现在},,cls=ComplexEncoder)

以上是“python如何使用json序列化datetime类型实例解析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

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