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出现_warn_unsafe_extraction问题的方法
Mar 24 Python
python常用函数详解
Sep 13 Python
Python正则表达式常用函数总结
Jun 24 Python
Python3实现爬取指定百度贴吧页面并保存页面数据生成本地文档的方法
Apr 22 Python
用python代码将tiff图片存储到jpg的方法
Dec 04 Python
Python从单元素字典中获取key和value的实例
Dec 31 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
给我一面国旗 python帮你实现
Sep 30 Python
深入浅析Python 中的sklearn模型选择
Oct 12 Python
基于python实现文件加密功能
Jan 06 Python
使用Python制作新型冠状病毒实时疫情图
Jan 28 Python
Python3爬虫中关于Ajax分析方法的总结
Jul 10 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
利用discuz自带通行证整合dedecms的方法以及文件下载
2007/03/06 PHP
几种有用的变型 PHP中循环语句的用法介绍
2012/01/30 PHP
PHP has encountered a Stack overflow问题解决方法
2014/11/03 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
PHP浮点数的一个常见问题
2016/03/10 PHP
PHP封装函数实现生成随机的字符串验证码
2017/01/24 PHP
Laravel5框架添加自定义辅助函数的方法
2018/08/01 PHP
深入分析PHP设计模式
2020/06/15 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
Extjs中使用extend(js继承) 的代码
2012/03/15 Javascript
Json实现异步请求提交评论无需跳转其他页面
2014/10/11 Javascript
JavaScript 封装一个tab效果源码分享
2015/09/15 Javascript
JS实现带鼠标效果的头像及文章列表代码
2015/09/27 Javascript
jQuery实现可关闭固定于底(顶)部的工具条菜单效果
2015/11/06 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
JavaScript仿微博输入框效果(案例分析)
2016/12/06 Javascript
BootStrap selectpicker后台动态绑定数据
2017/06/01 Javascript
JavaScript实现选中文字提示新浪微博分享效果
2017/06/15 Javascript
JavaScript继承与多继承实例分析
2018/05/26 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
js实现九宫格布局效果
2020/05/28 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
Python正则表达式匹配HTML页面编码
2015/04/08 Python
python+requests+unittest API接口测试实例(详解)
2017/06/10 Python
在Ubuntu中安装并配置Pycharm教程的实现方法
2021/01/06 Python
屈臣氏乌克兰:Watsons UA
2019/10/29 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
读书笔记格式
2015/07/02 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
反腐倡廉心得体会2016
2016/01/13 职场文书
创业计划书之香辣虾火锅
2019/09/23 职场文书