🔍 这是什么?

序列化

内存中对象(如 Java 类或 JS 对象)转换为传输格式(如字符串或字节流)的过程。

反序列化

传输格式转回程序可以使用的本机对象的过程。


💡为什么我们需要它?

想象一下 JavaScript 前端 将“User”对象发送到 Rust 后端

  • JavaScript 将数据视为动态对象。
  • Rust 将数据视为严格的结构。
  • 他们不能共享内存。他们需要一个通用标准(如 JSON)来充当桥梁。

现实生活中的类比: 想想宜家的家具。

  1. 序列化: 工厂将成品办公桌拆成扁平包装箱(紧凑型运输)。
  2. 传输: 盒子被运送到您家。
  3. 反序列化: 您将部件从盒子中取出并重建桌子,以便您可以使用它。

🛠 流行标准

类型 示例 最适合
基于文本 JSON、XML、YAML Web API、配置、人类可读性
基于二进制 Protobuf、Avro 高性能微服务,内部通信

🏗 JSON 深入探究

JSON(JavaScript 对象表示法)是最流行的 Web 通信标准。

规则:

  1. 大括号: 必须括在 {} 中。
  2. 键: 必须位于 "double quotes" 中。
  3. 数据类型: 支持 StringNumberBooleanArray 和嵌套 Objects

例子:

1
2
3
4
5
6
7
8
9
{
"id": 101,
"title": "Backend Engineering",
"is_published": true,
"tags": ["tech", "coding"],
"author": {
"name": "Sriniously"
}
}

工作流程客户端:

JavaScript 对象 -> JSON.stringify() -> JSON 字符串。

网络:JSON 字符串通过 HTTP 传输。

服务器端:JSON 字符串 -> JSON.parse() (或等效库) -> Rust/Java/Python 对象。

后端工程师注意:您的责任通常在于应用程序层。您确保遵循“合同”(JSON 结构),以便无论底层网络的复杂性如何,两个系统都可以进行通信。