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学习之对象序列化和反序列化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04Python外包有哪些常见的主要库-icode9专业技术文章分享
- 2024-10-02基于深度学习的钢铁缺陷检测系统(yolov8、注意力机制、PyQt5界面、Python)
- 2024-10-01怎么用python搭建一个系统-icode9专业技术文章分享
- 2024-09-30Python基础入门教程
- 2024-09-30获取参数学习:Python中的基础教程
- 2024-09-30Python编程基础详解
- 2024-09-29点击加载学习:Python编程基础教程
- 2024-09-29数据科学五大Python前端库:第二部分
- 2024-09-27使用python 将ETH账户的资产打散
- 2024-09-26Python编程基础