序列化和反序列化以及json相关

本文介绍了序列化和反序列化的概念及其重要性,探讨了序列化协议的特点,重点关注了Python中的pickle库、JSON以及MessagePack。JSON因其人眼可读、简洁和广泛支持而流行,而MessagePack则以高效、小巧和多语言支持受到青睐,尤其适用于高性能需求和跨语言通信。
摘要由CSDN通过智能技术生成

序列化和反序列化

为什么要序列化

内存中的字典、列表、集合以及各种对象,如何保存到一个文件中?
如果是自己定义的类的实例,如何保存在一个文件中?
如何从文件中读取数据,并让他们在内存中再次回复称自己对应的类的实例?

要设计一套协议,按照某种规则进行转换,转换后的数据可以用来存储或者传输。文件是一个字节序列,所以必须把数据转换成字节序列(可以害死),输出到文件。这就是序列化。反之从文件的字节序列恢复到内存并且还是原来的类型,这就是反序列化。

序列化协议的特点
  • 跨平台,并有多语言支持。这是根本目的。
  • 足够流行,意味着使用者众多,协议的基础设施迭代更新快。
  • 足够成熟,意味着协议经过足够的测试,和足够时间的检验。
  • 语言/平台的中立性,意味着协议对各个编程语言、操作系统的特性支持保持一致。
  • 可读性,如果数据序列化之后的数据人眼可读,那么开发过程对序列化数据的调试就会变得非常简单。
  • 性能,为了保持原有的数据结构,数据在序列化的过程中,必然会加进额外的描述字段。加入额外的字段,必然会使序列化后的大小大于纯数据的大小,同时也会涉及到序列化、反序列化对描述字段的解读效率的问题。因此一个好的序列化协议,应该在空间复杂度和时间复杂度上有好的表现。

pickle库

python中的序列化、反序列化模块。

函数 说明
dumps 对象序列化为
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值