python json序列化扩展,不支持的类型
import json from datetime import datetime class MyClass: def __init__(self, name): self.name = name class JsonEncodeExtend(json.JSONEncoder): def default(self, o): """ json序列化时,会将不支持的类型传入default方法, 我们可以在方法内部判断值的类型,然后转成字符串返回 注意:只会传入值,不会传入key :param o: :return: """ if isinstance(o, datetime): return o.strftime('%Y-%m-%d %H:%M:%S') if isinstance(o, MyClass): return o.name if __name__ == '__main__': obj = MyClass('杜子腾') now = datetime.today() # 默认json序列化不支持 自定义类,和datetime,我们可以通过cls参数扩展让他支持 dic = {'a': 1, 'b': 2, 'obj': obj, 'now': now} s = json.dumps(dic, cls=JsonEncodeExtend) print(s)