自定制序列化
import json from datetime import datetime class JsonCustomEncoder(json.JSONEncoder): #自定制序列化类 def default(self, field): #field是(123,datetime.now(),Response()) if isinstance(field, datetime): #对datetime.now()转换成字符串类型就可以序列化 return field.strftime('%Y-%m-%d %H') elif isinstance(field, Response): #对Response()转换成字典类型就可以序列化 return field.__dict__ else: return json.JSONEncoder.default(self, field) #如果是正常的可以序列化的就用默认的序列化方式 class Response(object): def __init__(self): self.status =True self.data = "abcd" data = { 'k1': 123, 'k2': datetime.now(), #datetime正常不能序列化(json.dumps默认只能序列化字典列表字符串布尔值) 'k3': Response() #Response() 正常不能序列化 } ds = json.dumps(data, cls=JsonCustomEncoder) #cls等于JsonCustomEncoder类,这个类必须继承json.JSONEncoder后data每次拿到数据都会执行default方法 print(ds)
返回:
{"k1": 123, "k3": {"data": "abcd", "status": true}, "k2": "2019-04-04 09"}