Python序列化和反序列化
目录
一、什么是序列化和反序列化
二、json模块
1.dump\dumps
2.load\loads
三、pickle模块
1.dump \dumps
2.load\loads
四、pickle和json区别
一、什么是序列化和反序列化
- 序列化是指将数据转化为可存储或传输的格式,(如,字节流、json、xml等)
- 反序列化就是将序列化的数据恢复为python对象的过程
二、json模块
1.dump\dumps
import jsondata = {'name': 'Bob', 'age': 30}
serialized = json.dumps(data) # 序列化为 JSON 字符串
with open('data.json', 'w') as f:json.dump(data, f) # 序列化并保存到文件
2.load\loads
import jsonwith open('data.json', 'r') as f:deserialized = json.load(f) # 从文件反序列化
data = json.loads(serialized) # 从字符串反序列化
三、pickle模块
1.dump \dumps
import pickledata = {'name': 'Alice', 'age': 25}
serialized = pickle.dumps(data) # 序列化为字节
with open('data.pkl', 'wb') as f:pickle.dump(data, f) # 序列化并保存到文件
2.load\loads
import picklewith open('data.pkl', 'rb') as f:deserialized = pickle.load(f) # 从文件反序列化
data = pickle.loads(serialized) # 从字节反序列化
四、marshal
从字节数据恢复为Python对象
import marshaldata = marshal.loads(serialized)
五、pickle、json、marshal区别
1.pickle是Python 独有的,且只支持转化为二进制文件,不易读取
2.json是跨系统的,跨语言兼容,支持多种格式存储或输出,一般是字典、列表、字符串、数字等
3.json支持前后端通信
4.需要高性能序列化是考虑marshal