1.什么是序列化&反序列化
内存中数据类型---->序列化------>特定的格式(json格式或者pickle格式)
互相转换方法1.
res=eval("{‘egon‘:111}")
print(res)
print(type(res))
#{‘egon‘: 111}
<class ‘dict‘>
res = str({‘egon‘:666})
print(res)
print(type(res))
#{‘egon‘: 666}
<class ‘str‘>
2、为何要序列化
# 序列化指的是把内存的数据类型转换成一个特定的格式的内容
# 该格式的内容
1、可用于存储=>用于存档
2、传输给其他平台使用=>跨平台数据交互
python ————————— java
列表 特定的格式 数组
3.json 验证:格式兼容的是所有语言通用的数据类型。并不能识别所有语言
强调:
针对用途1的特定格式,一种专用格式,只有python能够识别:pickle
针对用途2的特定格式,一种通用,能够被所有语言识别的格式:json
针对json中,数据类型必须加上双引号“” 否则会报错
3、如何序列化与反序列化
序列化
import json
res = json.dumps([1,‘aaa‘,True,False])
print(res,type(res)) # "[1,"aaa",true,false]" 注意:双引号
反序列化
import json
res = json.dumps([1,‘aaa‘,True,False])
l = json.load(res)
print(l,type(l)) #[1,‘aaa‘,True,False]
序列化的结果写入文件的方法
1.复杂方法
import json
res = json.dumps([1,‘aaa‘,True,False])
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘)as f:
f.write(res)
2.简单方法
with open(‘test.json‘,mode=‘wt‘,encoding=‘utf-8‘)as f:
json.dump([1,‘aaa‘,True,False],f)
# "[1,"aaa",true,false]" <class‘str‘>
从文件读取json格式的字符串进行反序列化操作方法
1.复杂方法
with open("test.json",mode="rt",encoding="utf-8") as f:
json_res = f.read()
res = json.loads(json_res)
print(res,type(res))
#[1, ‘aaa‘, True, False] <class ‘list‘>
2.简单方法
with open("test.json",mode="rt",encoding="utf-8") as f:
l=json.load(f)
print(l,type(l))
4. dumps/loads 区别
json.dumps(obj) 将python数据转化为json
json.loads(s) 将json数据转换为python的数据
json.dump(obj, fp) 转换为json并保存到文件中
json.load(fp) 从文件中读取json,并转化为python数据
json模块中 序列化与反序列化