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中针对函数处理的特殊方法
Mar 06 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python通过DOM和SAX方式解析XML的应用实例分享
Nov 16 Python
Python列表删除的三种方法代码分享
Oct 31 Python
python读取和保存视频文件
Apr 16 Python
PyQt5实现拖放功能
Apr 25 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
Python实现SQL注入检测插件实例代码
Feb 02 Python
Python基于scipy实现信号滤波功能
May 08 Python
Python中有几个关键字
Jun 04 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
Python 使用dict实现switch的操作
Apr 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
一个简单的PHP入门源程序
2006/10/09 PHP
Windows PHP5和Apache的安装与配置
2009/06/08 PHP
PHP使用mysql_fetch_object从查询结果中获取对象集的方法
2015/03/18 PHP
帝国CMS留言板回复后发送EMAIL通知客户
2015/07/06 PHP
PHP表单数据写入MySQL数据库的代码
2016/05/31 PHP
PHP二进制与字符串之间的相互转换教程
2016/10/14 PHP
微信公众平台开发教程⑥ 微信开发集成类的使用图文详解
2019/04/10 PHP
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
使用JavaScript和CSS实现文本隔行换色的方法
2015/11/04 Javascript
深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
2016/04/03 Javascript
js弹出框、对话框、提示框、弹窗实现方法总结(推荐)
2016/05/31 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
关于JavaScript的单双引号嵌套问题
2017/08/20 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
js贪心算法 钱币找零问题代码实例
2019/09/11 Javascript
vue+springboot图片上传和显示的示例代码
2020/02/14 Javascript
[02:23]2018DOTA2亚洲邀请赛趣味视频——反应测试
2018/04/04 DOTA
Python将xml和xsl转换为html的方法
2015/03/10 Python
python创建和删除目录的方法
2015/04/29 Python
在Python中处理日期和时间的基本知识点整理汇总
2015/05/22 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
pandas每次多Sheet写入文件的方法
2018/12/10 Python
python 实现GUI(图形用户界面)编程详解
2019/07/17 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
Python在终端通过pip安装好包以后在Pycharm中依然无法使用的问题(三种解决方案)
2020/03/10 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
英国知名美妆护肤在线商城:Zest Beauty
2018/04/24 全球购物
Jimmy Choo美国官网:周仰杰鞋子品牌
2018/06/08 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/01/13 面试题
汽车检测与维修专业求职信
2013/10/30 职场文书
教师年度考核自我鉴定
2014/01/19 职场文书
招股说明书范本
2014/05/06 职场文书
党代会心得体会
2014/09/04 职场文书
详解Python中下划线的5种含义
2021/07/15 Python
详解CSS3.0(Cascading Style Sheet) 层叠级联样式表
2021/07/16 HTML / CSS