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 截取 取出一部分的字符串方法
Mar 01 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Django如何实现内容缓存示例详解
Sep 24 Python
python随机取list中的元素方法
Apr 08 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
PyCharm代码格式调整方法
May 23 Python
纯python进行矩阵的相乘运算的方法示例
Jul 17 Python
初次部署django+gunicorn+nginx的方法步骤
Sep 11 Python
windows10环境下用anaconda和VScode配置的图文教程
Mar 30 Python
什么是python的函数体
Jun 19 Python
python爬虫爬取图片的简单代码
Jan 18 Python
关于 Python json中load和loads区别
Nov 07 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 应用程序安全防范技术研究
2009/09/25 PHP
PHP中error_log()函数的使用方法
2015/01/20 PHP
Yii2-GridView 中让关联字段带搜索和排序功能示例
2017/01/21 PHP
利用php生成验证码
2017/02/23 PHP
PHP pthreads v3下worker和pool的使用方法示例
2020/02/21 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
js类 from qq
2006/11/13 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
jquery 操作DOM案例代码分享
2012/04/05 Javascript
Javascript查询DBpedia小应用实例学习
2013/03/07 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
node.js中的events.emitter.removeAllListeners方法使用说明
2014/12/10 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
2016/01/22 Javascript
jQuery选择器及jquery案例详解(必看)
2016/05/20 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
Vue 实现显示/隐藏层的思路(加全局点击事件)
2019/12/31 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[01:08]DOTA2次级职业联赛 - Wings 战队宣传片
2014/12/01 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
Python连接mssql数据库编码问题解决方法
2015/01/01 Python
关于python3中setup.py小概念解析
2019/08/22 Python
pytorch::Dataloader中的迭代器和生成器应用详解
2020/01/03 Python
python实现TCP文件传输
2020/03/20 Python
中国旅游网站:同程旅游
2016/09/11 全球购物
华纳兄弟工作室的官方授权商店:WB Shop
2018/11/30 全球购物
美国翻新电子产品商店:The Store
2019/10/08 全球购物
集体备课反思
2014/02/12 职场文书
《雨霖铃》教学反思
2014/02/22 职场文书
在Spring-Boot中如何使用@Value注解注入集合类
2021/08/02 Java/Android
SQL写法--行行比较
2021/08/23 SQL Server