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基础教程之基本数据类型和变量声明介绍
Aug 29 Python
Python中为feedparser设置超时时间避免堵塞
Sep 28 Python
python里使用正则的findall函数的实例详解
Oct 19 Python
Python3实现的简单验证码识别功能示例
May 02 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python设计模式之建造者模式实例详解
Jan 17 Python
pytorch 预训练层的使用方法
Aug 20 Python
详解Django-channels 实现WebSocket实例
Aug 22 Python
python类的实例化问题解决
Aug 31 Python
python用线性回归预测股票价格的实现代码
Sep 04 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
python实现滑雪者小游戏
Feb 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
DedeCMS dede_channeltype表字段注释
2010/04/07 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
2013/08/10 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
js计算页面刷新的次数
2009/07/20 Javascript
javascript 计算两个整数的百分比值
2009/12/26 Javascript
Javascript实现div层渐隐效果的方法
2015/05/30 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
vue.js入门(3)——详解组件通信
2016/12/02 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
对layui中的onevent 和event的使用详解
2019/09/06 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
使用Python进行QQ批量登录的实例代码
2018/06/11 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
python 中的命名空间,你真的了解吗?
2020/08/19 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
2020/10/19 HTML / CSS
一份全面的PHP面试问题考卷
2012/07/15 面试题
物业管理员岗位职责范文
2013/11/25 职场文书
酒店总经理欢迎词
2014/01/15 职场文书
《我要的是葫芦》教学反思
2014/02/23 职场文书
国际贸易实务实训报告
2014/11/05 职场文书
毕业设计指导教师评语
2014/12/30 职场文书
护士实习自荐信
2015/03/06 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
西部计划志愿者工作总结
2015/08/11 职场文书
法制主题班会教案
2015/08/13 职场文书
合同补充协议书
2016/03/24 职场文书
同学聚会开幕词
2019/04/02 职场文书
读《皮囊》有感:理解是对他人的最大的善举
2019/11/14 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android