【序列化】浅谈对序列化的理解(转载)
原文链接:https://juejin.cn/post/7398045655775248421
浅谈对序列化的理解
1、为什么要进行序列化?
序列化(Serialization)是将对象的状态转换为可存储或传输的格式的过程。在编程和数据处理领域,序列化具有以下几个主要用途和好处:
- 数据持久化: 序列化可以将对象的状态保存到文件、数据库或其他存储介质中,以便在之后的程序运行中恢复(反序列化)这些对象。这对于保存应用程序状态、缓存数据等非常有用。
- 跨网络传输: 在分布式系统或网络应用中,序列化用于将对象转换为可在网络上传输的格式。例如,Web服务中通常会将数据序列化为JSON或XML格式,以便在客户端和服务器之间传递。
- 数据交换: 序列化使得不同编程语言或平台之间能够进行数据交换。通过将数据序列化为一种通用格式(如JSON、XML或Protocol Buffers),不同的系统可以互相理解和处理这些数据。
- 复制与深拷贝: 序列化可以用于对象的复制,特别是深度复制(deep copy)。通过序列化和反序列化,可以创建对象的完全副本,而不共享原对象中的引用。
- 调试和日志记录: 序列化后的数据可以用于调试和日志记录,以便在出现问题时分析和重现程序的状态。
2、什么是序列化?
- 序列化是指将对象实例的状态存到存储媒体的过程;
- 反序列化是指将存储在存储媒体中的对象状态装换成对象的过程。
用抽象的概念来讲:
- 序列化: 把对象转化为可传输的字节序列过程;
![图片[1]-值得推荐:【序列化】浅谈对序列化的理解(转载)-VR全景](http://media.hzzx3d.com/2025/09/20250905140521888.webp)
- 反序列化: 把字节序列还原为对象的过程。
![图片[2]-值得推荐:【序列化】浅谈对序列化的理解(转载)-VR全景](http://media.hzzx3d.com/2025/09/20250905140533271.webp)
3、常见的序列化的方式
1. JSON(JavaScript Object Notation)
- 特点:轻量级、可读性强、易于使用。
- 用途:广泛用于前后端数据交换、Web API。
- 优势:语言无关,支持大多数编程语言,易于解析和生成。
- 劣势:不支持二进制数据,效率相对较低。
2. XML(Extensible Markup Language)
- 特点:自描述性强,结构化良好,支持复杂数据类型。
- 用途:数据交换、配置文件、文档标记。
- 优势:广泛支持,良好的兼容性和扩展性。
- 劣势:冗长,解析和生成效率较低。
3. Protocol Buffers(Protobuf)
- 特点:由Google开发的高效二进制序列化格式。
- 用途:网络通信、数据存储、RPC系统。
- 优势:高效、数据压缩好,支持多种编程语言。
- 劣势:需要定义.proto文件,二进制格式不易阅读。
4. MessagePack
- 特点:高效的二进制序列化格式,类似于JSON。
- 用途:网络通信、数据存储。
- 优势:紧凑、效率高,支持复杂数据结构。
- 劣势:二进制格式,不适合人类阅读。
5. BSON(Binary JSON)
- 特点:二进制格式的JSON,主要用于MongoDB。
- 用途:NoSQL数据库文档存储。
- 优势:支持更多的数据类型,便于解析和快速查询。
- 劣势:格式相对复杂,适合特定用途。
其中,JSON 和 XML 是最为广泛使用的序列化格式,尤其是在Web开发和跨平台数据交换中。Protocol Buffers 和 MessagePack 则因其高效和紧凑性,常用于需要高性能的场景。BSON 主要应用于MongoDB等特定的NoSQL数据库中。
4.小结一下
(1)为什么我们要序列化?
因为我们需要将内存中的对象存储到媒介中,或者我们需要将一个对象通过网络传输到另外一个系统中。
(2)什么是序列化?
序列化就是把对象转化为可传输的字节序列过程;反序列化就是把字节序列还原为对象的过程。
(3)序列化的机制
序列化最终的目的是为了对象可以跨平台存储和进行网络传输,而我们进行跨平台存储和网络传输的方式就是 IO,而 IO 支持的数据格式就是字节数组。
将对象转成字节数组的时候需要制定一种规则,这种规则就是序列化机制。
(4)常见序列化的方式
现在常见的序列化方式有:JSON、ProtoBuf、XML、MessagePack、BSON等。
(5)序列化技术的选型
选型最重要的就是要考虑这三个方面:协议是否支持跨平台、序列化的速度、序列化生成的体积。
作者:_Leo同学
链接:https://juejin.cn/post/7398045655775248421
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
链接:https://juejin.cn/post/7398045655775248421
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
转载请保留原文链接:http://blog.hzzx3d.com/3926.html
© 版权声明
免责声明:本站的页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与我们联系(邮箱:3446525391@qq.com)删除或处理。稿件内容仅为传递更多信息之目的,不代表本网观点,也不代表本网站赞同其观点或证实其内容的真实性,更不对您的投资构成建议。
THE END


































