参考文章:CSDN
结构体的序列化与反序列化
结构体序列化
结构体序列化是将结构体转换为字节流的过程。这个字节流可以被写入文件、存储在数据库中,或者通过网络发送到另一台计算机。序列化的过程通常涉及以下步骤:
- 字段遍历:遍历结构体中的所有字段。
- 字段转换:将每个字段转换为可以存储或传输的格式。
- 字节流构建:将转换后的字段按照一定的顺序组合成一个连续的字节流。
序列化的目的是为了能够在不同的环境或平台上保持数据的完整性和一致性。
同时,序列化的结构体就不存在对齐补齐的问题了。
结构体反序列化
反序列化是序列化的逆过程,它将序列化后的字节流重新转换为原始的结构体。这个过程通常涉及以下步骤:
- 字节流读取:从存储或传输介质中读取字节流。
- 字段解析:按照序列化时的格式和顺序解析字节流中的每个字段。
- 数据结构重建:根据解析出的字段重建原始的数据结构。
反序列化使得原始数据结构可以在不同的环境或平台上被重新使用。
序列化和反序列化的应用
- 网络通信:在网络应用中,序列化用于将数据结构转换为可以在网络上传输的格式。接收方收到数据后,通过反序列化将数据恢复为原始结构体。
- 数据存储:在文件系统中存储数据时,序列化可以将数据结构转换为文件格式。读取文件时,通过反序列化将文件内容恢复为数据结构。
- 分布式系统:在分布式系统中,序列化和反序列化用于在不同的节点之间传递消息或数据。
在数据传输中,还有一种方法优于结构体序列化——JSON
JSON介绍
什么是JSON?
JSON是一种轻量级的数据交换格式,它基于文本,易于人阅读和编写,同时也易于机器解析和生成。JSON 实际上是与语言无关的格式,可以被多种编程语言读取和使用。
JSON特点:
- JSON是一种轻量级的数据交换格式
- JSON采用完全独立于计算机语言和操作系统的平台,不同编程语言和操作系统JSON数据是一样的
- JSON易于阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输效率)
JSON相比于结构体序列化的优点:
- JSON更易读取
- 结构体序列化关于0语义不是很明确(代表数字0或者空值),而JSON中用单独的null来代表空值
比如我们想向下图序列化的结构体里添加一个空值,只能添加0来表示,这时就会引发歧义,这个0是代表空值还是真正的数字呢?

JSON传输包含0的数据可能出现问题,可以对传输数据使用Base64进行编码,将0替换成其他字符,接收数据一方进行解码即可。
11万+

被折叠的 条评论
为什么被折叠?



