......得到一个 字符串 的结果 过程就叫序列化
字典 / 列表 / 数字 /对象 -序列化->字符串
为什么要序列化
# 1.要把内容写入文件 序列化
# 2.网络传输数据
序列化
字符串-反序列化->字典 / 列表 / 数字 /对象
序列化模块 json pickle shelve
import json
# json格式的限制1,json格式的key必须是字符串数据类型
# json格式中的字符串只能是""
# 写入中文需要加参数 ensu_ascii = False
# 如果是数字为key,那么dumps之后会强行转成字符串""数据类型,loads回来会变成字符串key
# 对元组做value的字典会把元组强制转换成列表
# json不支持元组做key, key只能是字符串类型
# 可以多次dump但是不能load出来
# 想dump多个数据进入文件,用dumps 先把每个类型都转序列化 再用 write 写入
# json的其他参数,是为了用户看的更方便,但是会相对浪费存储空间
# 只提供四个方法 dumps loads dump load
# 字符串转换 (dumps loads)
dic = {'aaa':'bbb','ccc':'ddd'} str_dic = json.dumps(dic) #序列化:将一个字典转换成一个字符串 print(dic) print(str_dic,type(str_dic)) # {"aaa": "bbb", "ccc": "ddd"} <class 'str'> #注意,json转换完的字符串类型的字典中的字符串是由""表示的 with open('json_dump','w') as f: f.write(str_dic) ret = json.loads(str_dic) #反序列化:将一个字符串格式的字典转换成一个字典 #注意,要用json的loads功能处理的字符串类型的字典中的字符串必须由""表示 print(ret,type(ret)) print(ret['aaa'])