不同对象转换成不同json文件(读写操作)

有一个学生类,里面有名字,年龄,电话属性


class Student:
    def __init__(self,name='',age=0,tel=0):
        self.name =name
        self.age =age
        self.tel =tel
        self.sex = '男'
    def show_info(self):
        print(self.__dict__)
    def __repr__(self):
        return str(self.__dict__)

有一个狗类,里面有名字,年龄等属性
class Dog:
    def __init__(self,name='',age=0):
        self.name  = name
        self.age   = age

    def __repr__(self):
        return str(self.__dict__)

将对象写成json文件并保存在本地
#学生对象和狗对象是分别保存在两个json文件中
def object_json2(obj:object):#obj是对象,不同的对象保存成不同的json文件
    file_name = obj.__class__.__name__+'.json'
    try:
        with open(file_name, 'r', encoding='utf-8') as f:
            list1 = json.load(f)
    except FileNotFoundError:
        list1 = []

    with open(file_name, 'w', encoding='utf-8') as f:
        list1.append(obj.__dict__)#obj.__dict__把类的对象的属性和值以字典方式返回
        json.dump(list1,f)

#创建学生对象,狗对象 调用object_json2方法
stu1 = Student('xiaohong',22,31)
dog1= Dog('xiaobai',22)
object_json2(stu1)
object_json2(dog1)


#读出指定对象
def get_all_info(type):
    file = type.__name__
    with open(file+'.json', 'r', encoding='utf-8') as f:
        list1  = json.load(f)
        new_list = []
        for dict1 in list1:
            object =type()
            for key in dict1:
                setattr(object,key,dict1[key])
            new_list.append(object)
    return  new_list
#打印学生对象,狗对象
print('学生',get_all_info(Student))
print('狗',get_all_info(Dog))

打印结果:
学生 [{'name': 'xiaohong', 'age': 22, 'tel': 31, 'sex': '男'}]
狗 [{'name': 'xiaobai', 'age': 22}]


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容