python-task8-json&pickle模块序列化

注意

如果处理的是字符串,就可以使用json.dumps()和json.loads()

如果处理的是文件,就可以使用json.dump()和json.load()

json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

import pickle
data = {'k1':123,'k2':'Hello'}
# pickle.dumps 将数据通过特殊的形式转换位只有python语言认识的字符串
p_str = pickle.dumps(data)
print(p_str)
#pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('D:/result.pk','wb',encoding='utf8') as fp:
    pickle.dump(data,fp)
    
    
import json
# json.dumps 将数据通过特殊的形式转换位所有程序语言都认识的字符串
j_str = json.dumps(data)
print(j_str)
#pickle.dump 将数据通过特殊的形式转换位只有python语言认识的字符串,并写入文件
with open('D:/result.json','wb',encoding='utf8') as fp:
    json.dump(data,fp)

json和pickle的区别

  • json:

优点:跨语言、体积小

缺点:只能支持int、str、list、tuple、dict

  • pickle:

优点:专为python设计,支持python所有的数据类型

缺点:只能在python中使用,存储数据占空间大

序列化和反序列化的概念

序列化:把对象转化为可传输的字节序列过程成为序列化,把内存里的数据类型转化为字符串,以使其能存储到硬盘或通过网络传输到过程,因为硬盘或网络传输时只接受bytes

反序列化:把字节序列还原为对象的过程成为反序列化

为什么要序列化

把内存里的数据保存到磁盘,写进文件,因为file.write只能写字符串类型,而没有办法保存复杂的数据结构,比如复杂的字典、嵌套的列表等等。所以就要把结构化数据先转变成一个字符串。

客户端想服务器发送请求后,服务器端怎么才能发用户需要的数据返回给客户端。这是我们就需要用一个执行的格式将数据,按照指定格式返回客户端。也就是说对象Object序列化,然后客户端根据接收到的字符串再反序列化(也就是将字符串还原对象)解析出响应的对象。

序列化主要就是为了传输方便,将要传输的对象序列化为二进制的数据流,小垃圾高,接受是通过反序列化转化成对象,从而达到一个传输的效果

这是就有了两种数据传输的方式(XML和json),在普通的网络应用中,不管是服务器还是客户端解析XML代码会非常麻烦,所以这时的JSON就更加满足数据传输解析的要求。采用的JSON格式的方式进行数据的传输,不仅方便传输解析,还特别容易于人阅读和编写。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值