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编写一个简单的FUSE文件系统的教程
Apr 02 Python
Windows下使Python2.x版本的解释器与3.x共存的方法
Oct 25 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
python3爬取各类天气信息
Feb 24 Python
使用Python更换外网IP的方法
Jul 09 Python
Python爬虫实现获取动态gif格式搞笑图片的方法示例
Dec 24 Python
python pandas写入excel文件的方法示例
Jun 25 Python
python实现读取excel文件中所有sheet操作示例
Aug 09 Python
python生成器推导式用法简单示例
Oct 08 Python
windows上彻底删除jupyter notebook的实现
Apr 13 Python
Jupyter Notebook 文件默认目录的查看以及更改步骤
Apr 14 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 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、MySQL 和 Zend Framework 的乱码问题
2009/03/03 PHP
PHP mail()函数使用及配置方法
2014/01/14 PHP
使用php伪造referer的方法 利用referer防止图片盗链
2014/01/20 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
2014/09/10 PHP
PHP与MYSQL中UTF8编码的中文排序实例
2014/10/21 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
js中如何把字符串转化为对象、数组示例代码
2013/07/17 Javascript
JS 实现点击a标签的时候让其背景更换
2013/10/15 Javascript
js中生成map对象的方法
2014/01/09 Javascript
jQuery Trim去除字符串首尾空字符的实现方法说明
2014/02/11 Javascript
使用jquery写个更改表格行顺序的小功能
2014/04/29 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
使用JQ完成表格隔行换色的简单实例
2017/08/25 Javascript
浅谈mint-ui 填坑之路
2017/11/06 Javascript
在knockoutjs 上自己实现的flux(实例讲解)
2017/12/18 Javascript
解决Vue2.x父组件与子组件之间的双向绑定问题
2018/03/06 Javascript
vue实现文件上传功能
2018/08/13 Javascript
关于Python元祖,列表,字典,集合的比较
2017/01/06 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
python实现感知器
2017/12/19 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
Pandas库之DataFrame使用的学习笔记
2019/06/21 Python
如何使用python操作vmware
2019/07/27 Python
python 使用shutil复制图片的例子
2019/12/13 Python
python GUI库图形界面开发之PyQt5浏览器控件QWebEngineView详细使用方法
2020/02/26 Python
用HTML5制作烟火效果的教程
2015/05/12 HTML / CSS
Crocs波兰官方商店:女鞋、男鞋、童鞋、洞洞鞋
2019/10/08 全球购物
database面试题
2013/03/28 面试题
车间调度岗位职责
2013/11/30 职场文书
市场部规章制度
2014/01/24 职场文书
运动会通讯稿200字
2014/02/16 职场文书
求职信内容怎么写
2014/05/26 职场文书
销售员工作检讨书(推荐篇)
2014/10/18 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
2019年最新借条范本!
2019/07/08 职场文书
通过Python把学姐照片做成拼图游戏
2022/02/15 Python