解决Python自带的json不能序列化data,datetime类型数据问题
Posted 听风。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Python自带的json不能序列化data,datetime类型数据问题相关的知识,希望对你有一定的参考价值。
官方文档中的一个Demo:
>>> import json >>> class ComplexEncoder(json.JSONEncoder): ... def default(self, obj): ... if isinstance(obj, complex): ... return [obj.real, obj.imag] ... return json.JSONEncoder.default(self, obj) ... >>> dumps(2 + 1j, cls=ComplexEncoder) ‘[2.0, 1.0]‘ >>> ComplexEncoder().encode(2 + 1j) ‘[2.0, 1.0]‘ >>> list(ComplexEncoder().iterencode(2 + 1j)) [‘[‘, ‘2.0‘, ‘, ‘, ‘1.0‘, ‘]‘]
然后简单扩展了一个JSONEncoder出来用来格式化时间
class CJsonEncoder(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参数即可:
json.dumps(datalist, cls=CJsonEncoder)
如果不想定义类,直接在我们获取的date或者datetime对象后面用上strftime方法进行格式化也可以
以上是关于解决Python自带的json不能序列化data,datetime类型数据问题的主要内容,如果未能解决你的问题,请参考以下文章
Spring data jpa JavassistLazyInitializer 不仅是Json序列化问题.以及解决办法