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)
原文地址:https://www.cnblogs.com/wtil/p/13817558.html