SerializationAndDeserialization
🔍 这是什么?
序列化
将内存中对象(如 Java 类或 JS 对象)转换为传输格式(如字符串或字节流)的过程。
反序列化
将传输格式转回程序可以使用的本机对象的过程。
💡为什么我们需要它?
想象一下 JavaScript 前端 将“User”对象发送到 Rust 后端:
- JavaScript 将数据视为动态对象。
- Rust 将数据视为严格的结构。
- 他们不能共享内存。他们需要一个通用标准(如 JSON)来充当桥梁。
现实生活中的类比: 想想宜家的家具。
- 序列化: 工厂将成品办公桌拆成扁平包装箱(紧凑型运输)。
- 传输: 盒子被运送到您家。
- 反序列化: 您将部件从盒子中取出并重建桌子,以便您可以使用它。
🛠 流行标准
| 类型 | 示例 | 最适合 |
|---|---|---|
| 基于文本 | JSON、XML、YAML | Web API、配置、人类可读性 |
| 基于二进制 | Protobuf、Avro | 高性能微服务,内部通信 |
🏗 JSON 深入探究
JSON(JavaScript 对象表示法)是最流行的 Web 通信标准。
规则:
- 大括号: 必须括在
{}中。 - 键: 必须位于
"double quotes"中。 - 数据类型: 支持
String、Number、Boolean、Array和嵌套Objects。
例子:
1 | { |
工作流程客户端:
JavaScript 对象 -> JSON.stringify() -> JSON 字符串。
网络:JSON 字符串通过 HTTP 传输。
服务器端:JSON 字符串 -> JSON.parse() (或等效库) -> Rust/Java/Python 对象。
后端工程师注意:您的责任通常在于应用程序层。您确保遵循“合同”(JSON 结构),以便无论底层网络的复杂性如何,两个系统都可以进行通信。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!