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的“二维”字典 (two-dimension dictionary)定义与实现方法
Apr 27 Python
PYTHON基础-时间日期处理小结
May 05 Python
python实现写数字文件名的递增保存文件方法
Oct 25 Python
在Pycharm terminal中字体大小设置的方法
Jan 16 Python
python实现QQ邮箱/163邮箱的邮件发送
Jan 22 Python
实例讲解Python脚本成为Windows中运行的exe文件
Jan 24 Python
Python类的继承用法示例
Jan 31 Python
Python实现京东秒杀功能代码
May 16 Python
Python PIL图片添加字体的例子
Aug 22 Python
Python定义函数实现累计求和操作
May 03 Python
Python打印特殊符号及对应编码解析
May 07 Python
python识别围棋定位棋盘位置
Jul 26 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远程调试之XDEBUG
2015/12/29 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP 自动加载的简单实现(推荐)
2016/08/12 PHP
php实现用户注册密码的crypt加密
2017/06/08 PHP
JQuery.ajax传递中文参数的解决方法 推荐
2011/03/28 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
详解jquery uploadify 上传文件
2013/11/09 Javascript
javascript实现节点(div)名称编辑
2014/12/17 Javascript
详解JavaScript对象序列化
2016/01/19 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
jQuery获取table行数并输出单元格内容的实现方法
2016/06/30 Javascript
JavaScript 数组- Array的方法总结(推荐)
2016/07/21 Javascript
Validform表单验证总结篇
2016/10/31 Javascript
基于jQuery的checkbox全选问题分析
2016/11/18 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
layer.open的自适应及居中及子页面标题的修改方法
2019/09/05 Javascript
[01:39](回顾)各路豪强针锋相对,几经鏖战四强产生
2014/07/01 DOTA
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
自己编程中遇到的Python错误和解决方法汇总整理
2015/06/03 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
在PyCharm中实现关闭一个死循环程序的方法
2018/11/29 Python
pycharm 更改创建文件默认路径的操作
2020/02/15 Python
Pytorch 解决自定义子Module .cuda() tensor失败的问题
2020/06/23 Python
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
财务会计实习报告体会
2013/12/20 职场文书
幼儿教师思想汇报
2014/01/10 职场文书
企业家王石演讲稿:坚持与放下
2014/04/27 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2015国庆节66周年标语
2015/07/30 职场文书
改进工作作风心得体会
2016/01/23 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL