1
、定义:
-
序列化:将数据结构或对象转换为可传输或存储的格式(如二进制流、
JSON
字符串)。 - 反序列化:将序列化后的数据还原为原始数据结构或对象。
2
、核心作用
- 跨网络传输:将对象转换为字节流,便于网络传输。
-
跨语言交互:通过统一格式(如
Protobuf
)实现多语言兼容。 - 持久化存储:将对象保存到文件或数据库。
3
、消息序列化与反序列化的核心优点
二进制协议压缩数据体积,提升网络传输效率,降低带宽消耗;统一数据格式(如
JSON/Protobuf
),实现多语言系统无缝交互;支持将对象转换为可存储格式(如文件、数据库),便于长期保存和恢复;
Schema
定义支持字段增删,保障版本向前
/
向后兼容;结构化数据格式减少注入攻击风险,结合校验机制提升安全性。
4
、序列化与反序列化在
go
语言中的使用
在
Go
语言中,
gob
和
json
是两种常见的数据序列化和反序列化方式,用于将
Go
语言中的数据结构转换为字节流或字符串,以便存储或传输,同时也可以将字节流或字符串还原为
Go
语言中的数据结构
-
gob
gob
gob是
Go
语言标准库中的一个包,专门用于序列化和反序列化
Go
语言的数据结构。它主要用于
Go
语言内部的数据传输,例如网络通信或文件存储。
-
特点
特点
gob是为Go语言设计的,对Go语言的数据结构支持非常好,序列化和反序列化速度较快;gob在序列化时会保留类型信息,因此在反序列化时可以还原为原始类型;gob格式是Go语言特有的,不适合与其他语言交互。
-
json
json
json是
JavaScript Object Notation
的缩写,是一种轻量级的数据交换格式,广泛用于各种编程语言之间的数据传输。
-
特点
特点
json格式被广泛支持,几乎所有的编程语言都有相应的库来处理json数据;;json格式的文本可读性较好,便于调试和查看;json支持多种数据类型,包括对象、数组、字符串、数字、布尔值等。
使用建议
-
只需要在
Go
语言内部进行数据传输,且对性能要求较高,推荐使用
gob
。
-
需要与其他语言交互,或者需要将数据存储为可读的文本格式,推荐使用
json
数据格式
5
、简单示例
//
序列化
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
user := User{Name: "Alice", Age:
30}
data, _ := json.Marshal(user) //
输出
:
{"name":"Alice","age":30}
//
反序列化
var newUser User
json.Unmarshal(data, &newUser)
fmt.Println(newUser.Name) //
输出
: Alice
推荐