首页 技术 正文
技术 2022年11月20日
0 收藏 456 点赞 3,370 浏览 2354 个字

序列化与反序列化

什么是序列化?
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输。
反序列化就是将硬盘中或者网络中传来的一种数据格式转换成内存中数据结构。为什么要有?1.可以保存程序的运行状态
2.实现数据的跨平台交互怎么用?json&pickle模块
其中json是通用的而pickle是只能在python识别json优点:
具有跨平台性json的局限性
只能支持/对应python部分的数据类型pickle的优点:
可以支持所有的python数据类型pickle的缺点:
只能被python识别,不能跨平台————————————————————————————————————————————————————————————————————————————————————————————————————————————
json的序列化.py
import jsonfunc_dic = {
'1': 'login',
'2': 'register',
'3': 'check_balance',
'4': 'transfer',
'5': 'reply',}# 序列化:将内存中的数据类型——————————————>json中间格式# 1.序列化得到json_str
# json_str = json.dumps(func_dic)# print(json_str,type(json_str))
# {"1": "login", "2": "register", "3": "check_balance", "4": "transfer", "5": "reply"} <class 'str'># json格式全都是双引号# 2.把json_str写入文件存起来
# with open('func.json','wt',encoding='utf-8')as f :
# f.write(json_str)# 1跟2合为一步
with open('func.json','wt',encoding='utf-8')as f:
json.dump(func_dic,f)
______________________________________________________________________________________________________________
json的反序列化.py
import json# 反序列化:json的中间格式------------------>内存中的数据类型#从文件中读取json_str
# with open('func.json','rt',encoding='utf-8')as f:
# json_str = f.read()
#
# # 将json_str转化成内存中的数据类型
# func_dic = json.loads(json_str)
#
# print(func_dic['2'])# 1跟2可以合成一步with open('func.json','rt',encoding='utf-8')as f:
func_die = json.load(f)print(func_die['1'])——————————————————————————————————————————————————————————————————————————————————————————————————————————————
json注意点
# json格式不能识别单引号,只能识别双引号import json# with open('func1.json','rt',encoding='utf-8')as f:
# l = json.load(f)
# print(l)# 用json序列化
# with open('func1.json','wt',encoding='utf-8')as f:
# l=[1,None,True]
# json.dump(l,f)# 用evel反序列化
# with open('func.json','rt',encoding='utf-8')as f:
# s = f.read()
# func_dic = eval(s)
# print(func_dic['1'])# with open('func1.json','rt',encoding='utf-8')as f:
# s=f.read() #s = '[1,null,true]'
# l = eval(s) #evel('[1,null,true]')
# print(l)# evel是把后面的字符串里的表达式拿出来在当前位置运行一下,把结果赋值给一个变量名————————————————————————————————————————————————————————————————————————————————————————————————————————————-—
pickle的序列化与反序列化.pyimport pickle# dic = {'name':'zrg','password':123,'height':170,'weight':120}
#
# # 序列化
# pkl = pickle.dumps(dic)
# print(pkl,type(pkl))
#
# with open(r'db.pkl','wb')as f:
# f.write(pkl)# with open(r'db.pkl','wb')as f:
# pickle.dump(dic,f)# 反序列化
# with open(r'db.pkl','rb')as f:
# pkl = f.read()
# dic = pickle.loads(pkl)
# print(dic['name'])# with open(r'db.pkl','rb')as f:
# dic = pickle.load(f)
#
# print(dic['weight'])


    					
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,075
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,551
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,399
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,811
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,893