可以用 json
和 __dict__
方法来实现序列化,对象被序列化后,其类型的是一个 str
语法:
json.dumps(对象, 序列化方法)
dumps
会将 对象
传递给序列化方法,然后序列化方法将内容以字典的方式传回,最后 dumps
将序列化之后的结果转换成一个 str
例:
import json class Student(object): def __init__(self, name, age): self.name = name self.age = age def ser(obj): return obj.__dict__ # 返回对象字典 if __name__ == '__main__': s = Student("张三", 18) # 进行序列化,default是指定获取字典格式的序列化方法,ensure_ascii是禁止使用ASCII码方式 ret = json.dumps(s, default=ser, ensure_ascii=False) print('序列化之后的内容:{}, 类型是:{}'.format(ret, type(ret)))
运行结果:
序列化之后的内容:{"name": "张三", "age": 18}, 类型是:<class 'str'>
例:
import json class Student(object): def __init__(self, name, age): self.name = name self.age = age def ser(obj): print(type(obj.__dict__)) return obj.__dict__ # 返回对象字典 # 反序列化函数 def hook(_dict): return Student(_dict['name'], _dict['age']) if __name__ == '__main__': s = Student("张三", 18) # 序列化 ret = json.dumps(s, default=ser, ensure_ascii=False) print('序列化之后的内容:{}, 类型是:{}'.format(ret, type(ret))) # 反序列化 obj = json.loads(ret, object_hook=hook) print('反序列化之后的对象:{}, 类型是:{}'.format(obj, type(obj)))
运行结果:
<class 'dict'> 序列化之后的内容:{"name": "张三", "age": 18}, 类型是:<class 'str'> 反序列化之后的对象:<__main__.Student object at 0x0000026EFD3C34F0>, 类型是:<class '__main__.Student'>