“序列化”与 “反序列化”

佚名 / 2024-09-18 / 原文

学习 Rust web 的过程中,前后端处理数据的过程中,要用到 serde 这个库,科普了一下 这是Rust 序列化、反序列化的方案,新的疑惑来了,什么是序列化、反序列化?

概念

序列化和反序列化,是计算机中用于数据存储和传输的重要概念。

序列化 (Serialization)

是将数据结构或对象转换成一种可存储、可传输格式的过程。在序列化后,数据可以被写入文件、发送到网络或储存在数据库中,以便在需要时候还可以再次还原成原始的数据结构、对象。序列化的过程通常涉及将数据转换成字节流或类似的格式,使其能够在不同平台和编程语言之间进行传输和交换。

反序列化(Deserialization)

是序列化的逆过程,即将序列化后的数据重新还原成原始的数据结构、对象。反序列化是从文件、网络数据库中读取序列化的数据,并将其转回原始形式,以便在程序中进行使用和操作。

使用场景

序列化和反序列化在许多场景中都非常有用,例如:
数据存储:将程序中的数据保存到文件或数据库中,以便在以后重新加载和使用。
网络通信:在网络上传输数据时,需要将数据序列化为字节流,以便在接收端进行反序列化。
分布式系统:在分布式系统中,不同计算节点之间需要通过序列化和反序列化来交换数据。
进程间通信:不同进程之间通信时,数据需要在序列化和反序列化之间进行转换。
常见的序列化格式包括 JSON(JavaScript Object Notation)、XML(eXtensible Markup Language)、Protocol Buffers、MessagePack等。每种格式有其优势和适用场景,选择合适的序列化格式取决于具体的应用需求。

摘自:https://developer.aliyun.com/article/1282870

serde 简单使用

// 添加 serde 依赖
cargo add serde --features derive
// 也可以添加对 json 的依赖
cargo add serde_json