序列化和反序列化理解

序列化反序列化

序列化:把字典,列表,字符串等数据转化为二进制的数据进永久储存。
		也可以理解为将程序中的一个数据结构类型转换为其他格式(字典、JSON、XML等),
		例如将Django中的模型类对象装换为JSON字符串,这个转换过程也可以理解为序列化。
反序列化:把二进制数据恢复为字典,列表,字符串对象数据。
		也可以理解为将其他格式(字典、JSON、XML等)转换为程序中的数据,
		例如将JSON字符串转换为Django中的模型类对象,这个过程也可以理解为反序列化。

需要序列化的情况

  1. 把内存中的对象状态保存到一个文件中或者数据库中的时候
  2. 使用套接字在网络上传送对象的时候
  3. 通过rml传输对象的时候

序列化的好处

序列化的二进制序列能够减少存储空间(永久性保存对象)。 
序列化成字节流形式的对象可以进行网络传输(二进制形式),方便了网络传输。
通过序列化可以在进程间传递对象。

序列化反序列化的应用

在开发REST API接口时,我们在视图中需要做的最核心的事是:
将数据库数据序列化为前端所需要的格式,并返回;
将前端发送的数据反序列化为模型类对象,并保存到数据库中。

python中将序列化的方法:pickle模块和json模块

文件操作序列化反序列化
无文件操作.dumps().loads()
写入文件.dump().load()

pickle模块

pickle模块是python特有的用pickle序列化的数据,反序列化也必须用pickle
pickle在python中可以序列化任何数据类型,,python专有的不能和其他语言兼容,结果是byte
picle模块序列化的数据 仅python可用,但功能强大,
pickle写入的是二进制数据,所以打开文件进行序列化写入时需要以wb和rb的模式。

json模块

json所有的语言都通用,它能序列化的数据是有限的:字典列表和元组
json模块序列化的数据 更通用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值