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 11 Python
python的文件操作方法汇总
Nov 10 Python
浅谈Python中的作用域规则和闭包
Mar 20 Python
python3.4.3下逐行读入txt文本并去重的方法
Apr 29 Python
Python判断两个list是否是父子集关系的实例
May 04 Python
Python基于多线程实现抓取数据存入数据库的方法
Jun 22 Python
Django框架实现逆向解析url的方法
Jul 04 Python
机器学习之KNN算法原理及Python实现方法详解
Jul 09 Python
利用python和百度地图API实现数据地图标注的方法
May 13 Python
Python Opencv中用compareHist函数进行直方图比较对比图片
Apr 07 Python
基于OpenCV的网络实时视频流传输的实现
Nov 15 Python
django学习之ajax post传参的2种格式实例
May 14 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中json_encode()和json_decode()
2014/05/25 PHP
PHP 5.6.11中CURL模块问题的解决方法
2016/08/08 PHP
PHP实现使用DOM将XML数据存入数组的方法示例
2017/09/27 PHP
PHP与SQL语句写一句话木马总结
2019/10/11 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
JavaScript 对象、函数和继承
2009/07/07 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
用JS实现轮播图效果(二)
2016/06/26 Javascript
利用transition实现文字上下抖动的效果
2017/01/21 Javascript
Angular 2父子组件之间共享服务通信的实现
2017/07/04 Javascript
函数式编程入门实践(一)
2019/04/20 Javascript
使用apifm-wxapi快速开发小程序过程详解
2019/08/05 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue 动态创建组件的两种方法
2020/12/31 Vue.js
Node使用koa2实现一个简单JWT鉴权的方法
2021/01/26 Javascript
Python计算三角函数之asin()方法的使用
2015/05/15 Python
tensorflow 用矩阵运算替换for循环 用tf.tile而不写for的方法
2018/07/27 Python
Python面向对象之静态属性、类方法与静态方法分析
2018/08/24 Python
Python3 shutil(高级文件操作模块)实例用法总结
2020/02/19 Python
python mysql 字段与关键字冲突的解决方式
2020/03/02 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
2020/04/30 Python
python3实现将json对象存入Redis以及数据的导入导出
2020/07/16 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
讲解员培训方案
2014/05/04 职场文书
文明和谐家庭事迹材料
2014/05/18 职场文书
学生上课迟到检讨书
2015/01/01 职场文书
业务员辞职信范文
2015/03/02 职场文书
预防艾滋病宣传活动总结
2015/05/09 职场文书
合作合同协议书
2016/03/21 职场文书
商业计划书格式、范文
2019/03/21 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
java调用Restful接口的三种方法
2021/08/23 Java/Android
漫画「处刑少女的生存之道」第3卷封面公开
2022/03/21 日漫