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 isinstance判断对象类型
Sep 06 Python
web.py中调用文件夹内模板的方法
Aug 26 Python
python实现单线程多任务非阻塞TCP服务端
Jun 13 Python
python发送邮件实例分享
Jul 28 Python
点球小游戏python脚本
May 22 Python
Python爬虫实现验证码登录代码实例
May 10 Python
对numpy下的轴交换transpose和swapaxes的示例解读
Jun 26 Python
python return逻辑判断表达式实现解析
Dec 02 Python
jupyter实现重新加载模块
Apr 16 Python
python sitk.show()与imageJ结合使用常见的问题
Apr 20 Python
在python里使用await关键字来等另外一个协程的实例
May 04 Python
pytorch显存一直变大的解决方案
Apr 08 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
基于PHPExcel的常用方法总结
2013/06/13 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
PIGCMS 如何关闭聊天机器人
2015/02/12 PHP
PHP实现事件机制实例分析
2015/06/26 PHP
PHP实现上一篇下一篇的方法实例总结
2016/09/22 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
自己整理的一个javascript日期处理函数
2010/10/16 Javascript
深入理解JavaScript作用域和作用域链
2011/10/21 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
angular双向绑定模拟探索
2016/12/26 Javascript
详解基于webpack和vue.js搭建开发环境
2017/04/05 Javascript
Angular 2父子组件数据传递之局部变量获取子组件其他成员
2017/07/04 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
分享5个顶级的JavaScript Ajax组件库
2018/09/16 Javascript
JS尾递归的实现方法及代码优化技巧
2019/01/19 Javascript
js中innerText/textContent和innerHTML与target和currentTarget的区别
2019/01/21 Javascript
JS实现的排列组合算法示例
2019/07/16 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
微信小程序实现点赞业务
2021/02/10 Javascript
[01:11:35]Liquid vs LGD 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
[01:00:11]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第一场 2月7日
2021/03/11 DOTA
python 多进程通信模块的简单实现
2014/02/20 Python
python装饰器实例大详解
2017/10/25 Python
Python:Numpy 求平均向量的实例
2019/06/29 Python
python 瀑布线指标编写实例
2020/06/03 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
大学生毕业自我评价范文分享
2013/11/07 职场文书
上班迟到检讨书
2014/09/15 职场文书
校园运动会广播稿
2015/08/19 职场文书
祝福语集锦:送给闺蜜的生日祝福语
2019/10/08 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Golang的继承模拟实例
2021/06/30 Golang