python使用json序列化datetime类型实例解析
作者:junli_chen 发布时间:2021-03-03 05:33:40
标签:python,datetime,json
使用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)
来源:http://blog.csdn.net/junli_chen/article/details/78133003


猜你喜欢
- 函数的返回值一个函数执行后可以返回多个返回值def measure(): print('测量开始。。。。&
- 从 webpack book 的 Loading Assets 一章中延申出来。改善前端项目体验中,很重要的点就是静态资源的优化。它是由于浏
- 多层索引的创建普通-多个index创建在创建数据的时候加入一个index列表,这个index列表里面是多个索引列表Series多层索引的创建
- 导语之前有很多小伙伴说想学习一下多线程图片下载器,虽然好像已经过去很久了,不过还是上来安排一波吧。至于题目为什么说是构建一个小型数据集,因为
- 最多16列。 create table test ( f1 int, f2 int, f3 int, f4 int, f5 int, f6
- URL完全匹配(具体的url)/indexURL模糊匹配(你根本就不知道index后面是什么,它根本不会返回参数)/index/\dURL带
- 最近要做个网页图片批量下载工具,然后需要一个页面显示网页上的所有图片供用户勾选,再根据勾选的内容来下载指定图片,其中就涉及到要到同时显示多张
- 我们使用的是QWebview模块,这里也主要是展示下QWebview的用法。之前在网上找了半天的解析网页的内容,都不是很清楚。这是核心代码:
- 本文实例讲述了Python嵌套函数,作用域与偏函数用法。分享给大家供大家参考,具体如下:内嵌函数(嵌套函数):意思:在函数里面再定义一个新的
- MySQL Innodb 引擎优化,InnoDB给MySQL提供了具有提交,回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。InnoD
- 本文主要介绍go语言静态库的编译和使用方法,以windows平台为例,linux平台步骤一样,具体环境如下:>echo %GOPATH
- 多版本并发控制Multiversion Concurrency Control大部分的MySQL的存储 引擎,比如InnoDB,Falcon
- 其实锁这种东西,都能能不加就不加,锁会导致程序一定程度上退回到串行化,进而降低效率。案例首先,看一个案例,如果要实现一个计数器,并且是多个协
- 1.设置Headers有些网站不会同意程序直接用上面的方式进行访问,如果识别有问题,那么站点根本不会响应,所以为了完全模拟浏览器的工作,我们
- 作者:Henny Swan / co-lead of WaSP ILG译者:JunChen / member of WaSP ILG原文:h
- 引言“ 这是MySQL系列笔记的第十二篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,
- 背景上周公司培训了MySQL replication, 这个周末打算用所学来实践操作一下。Master server:MySQL conta
- 本文实例讲述了PHP实现执行外部程序的方法。分享给大家供大家参考,具体如下:在一些特殊情况下,会使用PHP调用外部程序执行,比如:调用she
- SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML, 数据定义语言DDL,数据控制语言DCL。其中用于定义数据的结构,比如 创建
- python永久添加搜索路径_Python sys.path永久添加在用户目录下,找到隐藏文件.bashrc 文件然后在末尾添加export