# 1.什么是序列化
# 序列化是指把内存的数据类型转换成一个特定的格式的内容
# 该格式的内容可用于存储或者传输给其他平台使用
# 内存中的数据类型——————>序列化——————>特定的格式(json格式或pickle格式)
# 内存中的数据类型<——————反序列化<——————特定的格式(json格式或pickle格式)
# 2.为何要序列化
# 序列化得到的结果=>特定格式的内容有两种用途
# 1.可用于存储 => 用于存档
# 2.传输给其他平台使用 => 跨平台数据交互
# 针对用途1的特定格式:可以是一种专用的格式 => pickle格式(只有Python可以识别)
# 针对用途2的特定格式:应该是一种通用,能够被所有语言识别的格式 => json格式
# 如何序列化与反序列化
# ==========================================================
# json模块
import json
# json_res = json.dumps([1, 'aaa', True, False])
# print(json_res, type(json_res))
#
# l1 = json.loads(json_res)
# print(l1, type(l1))
# 将序列化的结果写入文件的复杂方法
# json_res = json.dumps([1, 'aaa', True, False])
# with open('test_json.txt',mode='wt',encoding='utf-8') as f:
# f.write(json_res)
# *将序列化的结果写入文件的简单方法
with open('test_json.txt', mode='wt', encoding='utf-8') as f:
json.dump([11, 'aaa', True, False], f)
# 从文件读取json格式字符串进行反序列化操作的复杂方法
# with open('test_json.txt', mode='rt', encoding='utf-8') as f:
# json_res = f.read()
# l1 = json.loads(json_res)
# print(l1, type(l1))
# *从文件读取json格式字符串进行反序列化操作的简单方法
with open('test_json.txt', mode='rt', encoding='utf-8') as f:
l1 = json.load(f)
print(l1, type(l1))
# json补充
# json格式兼容的是所有语言通用的数据类型,不能识别单一语言所独有的类型
# json格式中没有单引号
# ==========================================================
# pickle模块
import pickle
res = pickle.dumps({1, 2, 3, 4, 5})
print(res, type(res))
s = pickle.loads(res)
print(s, type(s))