Python学习之对象序列化和反序列化
2021/12/5 14:17:12
本文主要是介绍Python学习之对象序列化和反序列化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Python学习之对象序列化和反序列化
- 序列化
- 反序列化
序列化
可以用 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'>
这篇关于Python学习之对象序列化和反序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-03用FastAPI掌握Python异步IO:轻松实现高并发网络请求处理
- 2025-01-02封装学习:Python面向对象编程基础教程
- 2024-12-28Python编程基础教程
- 2024-12-27Python编程入门指南
- 2024-12-27Python编程基础
- 2024-12-27Python编程基础教程
- 2024-12-27Python编程基础指南
- 2024-12-24Python编程入门指南
- 2024-12-24Python编程基础入门
- 2024-12-24Python编程基础:变量与数据类型