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中requests模块的使用方法
Apr 08 Python
python使用Image处理图片常用技巧分析
Jun 01 Python
Python实现把json格式转换成文本或sql文件
Jul 10 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
python下os模块强大的重命名方法renames详解
Mar 07 Python
快速入门python学习笔记
Dec 06 Python
Python自动发送邮件的方法实例总结
Dec 08 Python
对Python3 goto 语句的使用方法详解
Feb 16 Python
django数据库自动重连的方法实例
Jul 21 Python
python logging添加filter教程
Dec 24 Python
详解Python调用系统命令的六种方法
Jan 28 Python
Python中tqdm的使用和例子
Sep 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实现禁用IE和火狐的缓存问题
2012/12/03 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
jQuery 工具函数学习资料
2010/04/29 Javascript
Javascript 去除数组的重复元素
2010/05/04 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
jQuery基于cookie实现的购物车实例分析
2015/12/24 Javascript
vue轮播图插件vue-awesome-swiper
2017/11/27 Javascript
JS实现常见的查找、排序、去重算法示例
2018/05/21 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
2018/09/01 Javascript
react项目如何使用iconfont的方法步骤
2019/03/13 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
Python多线程、异步+多进程爬虫实现代码
2016/02/17 Python
通过Python使用saltstack生成服务器资产清单
2016/03/01 Python
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
用python简单实现mysql数据同步到ElasticSearch的教程
2018/05/30 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
Python中is和==的区别详解
2018/11/15 Python
python 实现矩阵按对角线打印
2019/11/29 Python
Python3 使用selenium插件爬取苏宁商家联系电话
2019/12/23 Python
基于pygame实现童年掌机打砖块游戏
2020/02/25 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
CSS中几个与换行有关的属性简明总结
2014/04/15 HTML / CSS
附答案的Java面试题
2012/11/19 面试题
教师节促销活动方案
2014/02/14 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
幼师小班个人总结
2015/02/12 职场文书
导游词300字
2015/02/13 职场文书
银行求职信范文怎么写
2015/03/20 职场文书
护士求职自荐信
2015/03/25 职场文书
您对思维方式了解多少?
2019/12/09 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python
oracle连接ODBC sqlserver数据源的详细步骤
2021/07/25 Oracle
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL