【一】什么是序列化
将Python中的字典、列表、元组 ... 转换成 字符串类型
如果使用str强制转换数据类型,造成的后果就是转换后的字符串无法转回Python对象
【二】什么是反序列化
将字符串类型的数据转换成Python对象(列表、字典、元组 ... )
能将python对象转为字符串 --> 字符串转回python对象
【三】json模块
【1】导入json模块
【2】反序列化和序列化方法之保存和读取
(1)序列化保存Python对象数据
user_data_dict = {
'username': "dream",
"password": "521"
}
保存到本地的文件中 保存进去是字典格式的字符串 独取出来也是字典格式的字典
'''
with open("user_data.text", 'w', encoding='utf-8') as fp:
fp.write(str(user_data_dict))
with open("user_data.text", 'r', encoding='utf-8') as fp:
data = fp.read()
print(data)
print(dict(data))
'''
存储为json文件数据
'''
with open('user_data.json', 'w', encoding="utf-8") as fp:
json.dump(obj=user_data_dict, fp=fp)
'''
在内部自动将单引号全部转换为双引号,然后保存进去
(2)将json格式数据转换W为Python对象
'''
with open('user_data.json', 'r', encoding="utf-8") as fp:
data = json.load(fp=fp)
print(data, type(data))
'''
【3】反序列化和序列化方法之转换
我就想将一个字典转换为字符串 转回字典
'''
(1)将字典转换为字符串格式
data_json_str = json.dumps(obj=user_data_dict)
print(data_json_str, type(data_json_str)) # {"username": "dream", "password": "521"} <class 'str'>
(2)将字符串转回 python对象
data_json_dict = json.loads(data_json_str)
print(data_json_dict, type(data_json_dict)) # {'username': 'dream', 'password': '521'} <class 'dict'>
'''
'''
import json
【4】使用json保存数据的时候的特点
user_data = {'name': "蚩梦", "age": 18}
with open('data.json', 'w', encoding='utf-8') as fp:
json.dump(obj=user_data, fp=fp, ensure_ascii=False)
编码和解码
编码 encode(编码格式)
解码 decode(编码格式)
'''
import json
【4】使用json保存数据的时候的特点
user_data = {'name': "蚩梦", "age": 18}
with open('data.json', 'w', encoding='utf-8') as fp:
json.dump(obj=user_data, fp=fp, ensure_ascii=False)