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 相关文章推荐
Django1.7+python 2.78+pycharm配置mysql数据库教程
Nov 18 Python
python 写的一个爬虫程序源码
Feb 28 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
May 25 Python
Python实现的栈(Stack)
Jan 26 Python
Python UnboundLocalError和NameError错误根源案例解析
Oct 31 Python
Python中函数的基本定义与调用及内置函数详解
May 13 Python
python批量爬取下载抖音视频
Jun 17 Python
PYTHON如何读取和写入EXCEL里面的数据
Oct 28 Python
python实现简单俄罗斯方块
Mar 13 Python
Python读取配置文件(config.ini)以及写入配置文件
Apr 08 Python
详解PyQt5中textBrowser显示print语句输出的简单方法
Aug 07 Python
python利用opencv实现颜色检测
Feb 23 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下实现农历日历的代码
2007/03/07 PHP
PHP 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
php tp验证表单与自动填充函数代码
2012/02/22 PHP
getJSON跨域SyntaxError问题分析
2014/08/07 PHP
PHP+Ajax验证码验证用户登录
2016/07/20 PHP
javascript判断用户浏览器插件安装情况的代码
2011/01/01 Javascript
JavaScript中URL编码函数代码
2011/01/11 Javascript
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
用js读、写、删除Cookie代码分享及详细注释说明
2014/06/05 Javascript
浅谈JavaScript中定义变量时有无var声明的区别
2014/08/18 Javascript
深入理解JavaScript系列(36):设计模式之中介者模式详解
2015/03/04 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
js实现表单检测及表单提示的方法
2015/08/14 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
JS设置时间无效问题的解决办法
2017/02/18 Javascript
Bootstrap table使用方法总结
2017/05/10 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
Bootstrap的aria-label和aria-labelledby属性实例详解
2018/11/02 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
详解vue-router导航守卫
2019/01/19 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
vue中的过滤器及其时间格式化问题
2020/04/09 Javascript
Vue3为什么这么快
2020/09/23 Javascript
[42:25]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第三场
2018/04/06 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
用Python将动态GIF图片倒放播放的方法
2016/11/02 Python
python中numpy基础学习及进行数组和矢量计算
2017/02/12 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
Python3如何判断三角形的类型
2020/04/12 Python
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
意大利文具和办公产品在线商店:Y-Office
2020/02/27 全球购物
sort命令的作用和用法
2012/11/04 面试题
村委会主任先进事迹
2014/01/15 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
三严三实学习心得体会(精选N篇)
2016/01/05 职场文书