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


Posted in Python onFebruary 11, 2018

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

# -*- coding: cp936 -*-
from datetime import datetime

import json

if __name__=='__main__':
 now = datetime.now()
 json.dumps({'now':now})

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

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类型。

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

例如:

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

总结

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

Python 相关文章推荐
Python实现命令行通讯录实例教程
Aug 18 Python
Python实现自动为照片添加日期并分类的方法
Sep 30 Python
matplotlib绘图实例演示标记路径
Jan 23 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
基于Python实现的微信好友数据分析
Feb 26 Python
python书籍信息爬虫实例
Mar 19 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
python内存管理机制原理详解
Aug 12 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
Aug 19 Python
Python 3 使用Pillow生成漂亮的分形树图片
Dec 24 Python
pytorch实现用CNN和LSTM对文本进行分类方式
Jan 08 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
Python中pow()和math.pow()函数用法示例
Feb 11 #Python
Python反射的用法实例分析
Feb 11 #Python
python互斥锁、加锁、同步机制、异步通信知识总结
Feb 11 #Python
python编程嵌套函数实例代码
Feb 11 #Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 #Python
Django自定义manage命令实例代码
Feb 11 #Python
Python实现的购物车功能示例
Feb 11 #Python
You might like
自定义PHP分页函数
2006/10/09 PHP
php从右向左/从左向右截取字符串的实现方法
2011/11/28 PHP
浅析PHP中strlen和mb_strlen的区别
2014/08/31 PHP
老生常谈ThinkPHP中的行为扩展和插件(推荐)
2017/05/05 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
silverlight线程与基于事件驱动javascript引擎(实现轨迹回放功能)
2011/08/09 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
div模拟滚动条效果示例代码
2013/10/16 Javascript
javascript获取select的当前值示例代码(兼容IE/Firefox/Opera/Chrome)
2013/12/17 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
JavaScript判断undefined类型的正确方法
2015/06/30 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
Element UI框架中巧用树选择器的实现
2018/12/12 Javascript
js实现上传图片并显示图片名称
2019/12/18 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Python快速排序算法实例分析
2017/11/29 Python
Python操作MySQL数据库的方法
2018/06/20 Python
Python使用pickle模块实现序列化功能示例
2018/07/13 Python
pyqt5与matplotlib的完美结合实例
2019/06/21 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
在脚本中单独使用django的ORM模型详解
2020/04/01 Python
如何在django中实现分页功能
2020/04/22 Python
Python爬虫实例——爬取美团美食数据
2020/07/15 Python
降低python版本的操作方法
2020/09/11 Python
python线程优先级队列知识点总结
2021/02/28 Python
html5中去掉input type date默认样式的方法
2018/09/06 HTML / CSS
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
Original Penguin英国官方网站:美国著名休闲时装品牌
2016/10/30 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
Lululemon英国官网:加拿大瑜伽服装品牌
2019/01/14 全球购物
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
初中教师业务学习材料
2014/05/12 职场文书
教师党员岗位承诺书
2014/05/29 职场文书