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 相关文章推荐
Python3.2中的字符串函数学习总结
Apr 23 Python
Python运算符重载用法实例分析
Jun 01 Python
python中日志logging模块的性能及多进程详解
Jul 18 Python
3个用于数据科学的顶级Python库
Sep 29 Python
Python计算时间间隔(精确到微妙)的代码实例
Feb 26 Python
python pandas写入excel文件的方法示例
Jun 25 Python
pytorch在fintune时将sequential中的层输出方法,以vgg为例
Aug 20 Python
浅谈Django+Gunicorn+Nginx部署之路
Sep 11 Python
opencv+python实现均值滤波
Feb 19 Python
Python OpenCV读取显示视频的方法示例
Feb 20 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
Python如何优雅删除字符列表空字符及None元素
Jun 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读MYSQL中文乱码的解决方法
2006/12/17 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
PHP如何使用array_unshift()在数组开头插入元素
2020/09/01 PHP
javascript拓展DOM操作 prependChild insertAfert
2010/11/17 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
ES6的新特性概览
2016/03/10 Javascript
js获取元素的标签名实现方法
2016/10/08 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
解决vue打包之后静态资源图片失效的问题
2018/02/21 Javascript
vscode中vue-cli项目es-lint的配置方法
2018/07/30 Javascript
使用vue-cli脚手架工具搭建vue-webpack项目
2019/01/14 Javascript
jQuery模拟html下拉多选框的原生实现方法示例
2019/05/30 jQuery
uniapp 仿微信的右边下拉选择弹出框的实现代码
2020/07/12 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
python使用新浪微博api上传图片到微博示例
2014/01/10 Python
python进程管理工具supervisor使用实例
2014/09/17 Python
python实现udp数据报传输的方法
2014/09/26 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
阿根廷票务网站:StubHub阿根廷
2018/04/13 全球购物
俄罗斯小米家用电器、电子产品和智能家居商店:Poood.ru
2020/04/03 全球购物
linux系统都有哪些运行级别
2012/04/15 面试题
2014高中生入党思想汇报范文
2014/09/13 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
2015年国庆节寄语
2015/08/17 职场文书
考研经验交流会策划书
2015/11/02 职场文书
MySQL如何构建数据表索引
2021/05/13 MySQL
如何将numpy二维数组中的np.nan值替换为指定的值
2021/05/14 Python
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
Vue操作Storage本地化存储
2022/04/29 Vue.js