python 任意对象转dict



def obj2dict( obj):
    def is_basic_value( obj):
        # 定义基本类型集合
        basic_types = (int, float, str, bool,     type(None))

        # 检查对象类型是否在基本类型集合中
        return isinstance(obj, basic_types)
    if is_basic_value(obj):
        return obj
    if isinstance(obj, tuple):
        return [obj2dict(v) for v in obj]
    if isinstance(obj, list):
        return [obj2dict(v) for v in obj]
    if isinstance(obj, dict):
        return {k: obj2dict(v) for k, v in obj.items()}
    elif hasattr(obj, "__dict__"):
        return {k: obj2dict(v) for k, v in obj.__dict__.items() if not k.startswith('_')} # =过滤掉私有属性
    else:
        raise TypeError("Unserializable object: {}".format(obj))


if __name__ == "__main__":



    class A():
        def __init__(self):
            self.name = 1
            self.children = []
            self.children_dic = {1: 'a', 2: 'b'}

        def __str__(self):
            return 'A'

        def sd(self):
            return 'A'

        def todict(self):
            return 'A'
    a1 = A()
    a2 = A()
    a2.name=2
    a3 = A()
    a3.name=3
    # a3.children=[a1,a2]
    a3.children_dic = {1: a1, 2: a2}
    a3.children=[a1,a2]



    a=obj2dict(a3)

    print(a)

posted on 2025-09-11 17:50  张博的博客  阅读(11)  评论(0)    收藏  举报

导航