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采用Django开发自己的博客系统
Sep 29 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python3 pip3 list 出现 DEPRECATION 警告的解决方法
Feb 16 Python
Python学习笔记之迭代器和生成器用法实例详解
Aug 08 Python
python 五子棋如何获得鼠标点击坐标
Nov 04 Python
windows下python安装pip方法详解
Feb 10 Python
python识别验证码图片实例详解
Feb 17 Python
浅谈Django QuerySet对象(模型.objects)的常用方法
Mar 28 Python
Python的控制结构之For、While、If循环问题
Jun 30 Python
Python读写Excel表格的方法
Mar 02 Python
还在手动盖楼抽奖?教你用Python实现自动评论盖楼抽奖(一)
Jun 07 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
eWebEditor v3.8 商业完整版 (PHP)
2006/12/06 PHP
php daddslashes()和 saddslashes()有哪些区别分析
2012/10/26 PHP
php显示指定目录下子目录的方法
2015/03/20 PHP
javascript的函数
2007/01/31 Javascript
JQuery select标签操作代码段
2010/05/16 Javascript
javascript关于继承的用法汇总
2014/12/20 Javascript
php利用curl获取远程图片实现方法
2015/10/26 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
利用原生js和jQuery实现单选框的勾选和取消操作的方法
2016/09/04 Javascript
JS针对Array的各种操作汇总
2016/11/29 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
微信小程序 列表的上拉加载和下拉刷新的实现
2017/04/01 Javascript
webpack中的热刷新与热加载的区别
2018/04/09 Javascript
vue 移动端适配方案详解
2018/11/15 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
2019/11/20 Javascript
JavaScript中this函数使用实例解析
2020/02/21 Javascript
ES2020让代码更优美的运算符 (?.) (??)
2021/01/04 Javascript
python中执行shell命令的几个方法小结
2014/09/18 Python
Python中实现的RC4算法
2015/02/14 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python无损音乐搜索引擎实现代码
2018/02/02 Python
使用python将大量数据导出到Excel中的小技巧分享
2018/06/14 Python
利用Python如何生成便签图片详解
2018/07/09 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python自定义时钟类、定时任务类
2021/02/22 Python
python实现对图片进行旋转,放缩,裁剪的功能
2019/08/07 Python
python列表的逆序遍历实现
2020/04/20 Python
do you have any Best Practice for testing
2016/06/04 面试题
法制宣传口号
2014/06/16 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
班主任寄语2015
2015/02/26 职场文书
2015年小学财务工作总结
2015/07/20 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
Python 数据科学 Matplotlib图库详解
2021/07/07 Python