Python-19
1. json与pickle模块
什么是序列化和反序列化
- 序列化:是将内存中的数据结构,转换成一种中间格式,将转化后的中间格式存储到硬盘,或者基于网络传输
- 反序列化:是将硬盘中或者网路中传过来的中间格式,转换成内存中的数据结构
2. 序列化和反序列化有什么用
- 将状态通过中间格式存储到硬盘,可以保存程序的运行状态
- 数据可以跨平台交互,不同的编程语言,通过序列化成中间格式就可以互相交互
- 存到硬盘的文本文件都是字符串,再次使用时,需要将硬盘中的数据转化成以前的数据类型状态
3. json与pickle模块的区别
① json
- 优点:
jison
具有跨平台性,所有编程语言都能转成json
格式- 缺点:只能支持
python
的部分数据类型
② pickle
- 优点:支持
python
的所有数据了理性- 缺点:
pickle
只能识别python
,不能跨平台
③ JSON类型和Python类型的对应关系
4. json的的序列化
① json.dumps(内存的数据)
- 说明:
json
不能识别单引号,只能使用双引号,因此而,json
序列化的过程中会把单引号转成双引号
# 导入json模块
import json
# 内存中数据
dic={'name':'xut','age':18,'sex':'male'}
# json序列化:内存中的数据类型---->json中间格式
json_str=json.dumps(dic)
# print(json_str,type(json_str))
# 将序列化中间格式写到文件
with open(r'db.json','wt',encoding='utf-8') as f:
f.write(json_str)
② json.dump(内存中数据对象,文件))
json.dump
可以将上面的两步进行合并
import json
dic={'name':'xut','age':18,'sex':'male'}
with open(r'db.json','wt',encoding='utf-8') as f:
json.dump(dic,f)
③ 总结
- 序列化不同的数据类型,就写到不同的文件中
5. json的反序列化
① json.loads(文件中的中间格式)