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列表去重的二种方法
Feb 14 Python
使用python编写脚本获取手机当前应用apk的信息
Jul 21 Python
Python标准库之sqlite3使用实例
Nov 25 Python
利用python实现xml与数据库读取转换的方法
Jun 17 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
Nov 29 Python
Python自动化运维之IP地址处理模块详解
Dec 10 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
python2和python3的输入和输出区别介绍
Nov 20 Python
numpy.linalg.eig() 计算矩阵特征向量方式
Nov 29 Python
浅谈Django前端后端值传递问题
Jul 15 Python
Python爬虫进阶之爬取某视频并下载的实现
Dec 08 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
php模板之Phpbean的目录结构
2008/01/10 PHP
PHP 页面编码声明方法详解(header或meta)
2010/03/12 PHP
php中CI操作多个数据库的代码
2012/07/05 PHP
解析php下载远程图片函数 可伪造来路
2013/06/25 PHP
PHP引用返回用法示例
2016/05/28 PHP
详解PHP处理字符串类似indexof的方法函数
2017/06/11 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
关于juqery radio写法的兼容性问题(新老版本jquery)
2010/06/14 Javascript
jQuery语法总结和注意事项小结
2012/11/11 Javascript
JS检测输入字符是否包含非法字符的示例代码
2014/02/11 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
基于canvas实现的钟摆效果完整实例
2016/01/26 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JQuery ZTree使用方法详解
2017/01/07 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
PyQt实现计数器的方法示例
2021/01/18 Python
详解HTML5之pushstate、popstate操作history,无刷新改变当前url
2017/03/15 HTML / CSS
Android面试宝典
2013/08/06 面试题
电子信息专业自荐书
2014/02/04 职场文书
观看《杨善洲》宣传教育片心得体会
2016/01/23 职场文书
会计专业2019暑假实习报告
2019/06/21 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书
聊聊mysql都有哪几种分区方式
2022/04/13 MySQL