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自动化测试工具Splinter简介和使用实例
May 13 Python
Python实现冒泡,插入,选择排序简单实例
Aug 18 Python
Python操作MySQL简单实现方法
Jan 26 Python
python实现超简单端口转发的方法
Mar 13 Python
Flask入门教程实例:搭建一个静态博客
Mar 27 Python
使用Python下的XSLT API进行web开发的简单教程
Apr 15 Python
Python中numpy模块常见用法demo实例小结
Mar 16 Python
python3使用matplotlib绘制条形图
Mar 25 Python
python实现淘宝购物系统
Oct 25 Python
Python Handler处理器和自定义Opener原理详解
Mar 05 Python
使用Python实现批量ping操作方法
May 06 Python
详解用python -m http.server搭一个简易的本地局域网
Sep 24 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批量删除操作(数据访问)
2017/05/23 PHP
基于jQuery制作迷你背词汇工具
2010/07/27 Javascript
jquery下为Event handler传递动态参数的代码
2011/01/06 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
Javascript实现计算个人所得税
2015/05/10 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
Vue中使用vux的配置详解
2017/05/05 Javascript
使用Vue开发一个实时性时间转换指令
2018/01/17 Javascript
详解Angular结合zTree异步加载节点数据
2018/01/20 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
[02:19]DOTA2女子战队FOX视频专访:希望更多美眉一起加入
2013/10/15 DOTA
[54:24]Optic vs TNC 2018国际邀请赛小组赛BO2 第二场
2018/08/18 DOTA
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python+selenium识别验证码并登录的示例代码
2017/12/21 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
2020/07/03 Python
Python3如何使用多线程升程序运行速度
2020/08/11 Python
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
经济实惠的名牌太阳镜和眼镜:Privé Revaux
2021/02/07 全球购物
如何查看在weblogic中已经发布的EJB
2012/06/01 面试题
会计简历自我评价
2015/03/10 职场文书
2015年万圣节活动总结
2015/03/24 职场文书
2015年度服装销售工作总结
2015/03/31 职场文书
Django开发RESTful API实现增删改查(入门级)
2021/05/10 Python
python中pandas对多列进行分组统计的实现
2021/06/18 Python
python中if和elif的区别介绍
2021/11/07 Python
基于CSS制作创意端午节专属加载特效
2022/06/01 HTML / CSS
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript