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实例之wxpython中Frame使用方法
Jun 09 Python
Python实现读取文件最后n行的方法
Feb 23 Python
Python 自动化表单提交实例代码
Jun 08 Python
python flask 多对多表查询功能
Jun 25 Python
python下载文件记录黑名单的实现代码
Oct 24 Python
Django实现组合搜索的方法示例
Jan 23 Python
django 发送手机验证码的示例代码
Apr 25 Python
Python实现的线性回归算法示例【附csv文件下载】
Dec 29 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
python的flask框架难学吗
Jul 31 Python
详解python程序中的多任务
Sep 16 Python
python 牛顿法实现逻辑回归(Logistic Regression)
Oct 15 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 8小时时间差的解决方法小结
2009/12/22 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
ThinkPHP中调用PHPExcel的实现代码
2017/04/08 PHP
windows下的WAMP环境搭建图文教程(推荐)
2017/07/27 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
理解Javascript_01_理解内存分配原理分析
2010/10/11 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
2015/02/13 Javascript
jQuery实现点击水纹波动动画
2016/04/10 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
Angular2平滑升级到Angular4的步骤详解
2017/03/29 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
Vue2路由动画效果的实现代码
2017/07/10 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
vue router-link传参以及参数的使用实例
2017/11/10 Javascript
详解angularjs实现echart图表效果最简洁教程
2017/11/29 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
[00:12]2018DOTA2亚洲邀请赛 Somnus丶M出阵单挑
2018/04/06 DOTA
[01:36:17]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第一场 1月31日
2021/03/11 DOTA
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Python实现购物车功能的方法分析
2017/11/10 Python
python tornado微信开发入门代码
2018/08/24 Python
python中嵌套函数的实操步骤
2019/02/27 Python
CSS3改变浏览器滚动条样式
2019/01/04 HTML / CSS
日语求职信范文
2013/12/17 职场文书
大学生毕业鉴定
2014/01/31 职场文书
财务学生的职业生涯发展
2014/02/11 职场文书
家长对孩子的评语
2014/04/18 职场文书
千与千寻观后感
2015/06/04 职场文书
MySQL创建定时任务
2022/01/22 MySQL
Mysql调整优化之四种分区方式以及组合分区
2022/04/13 MySQL