序列化与反序列化(GO实现)
GO序列化与反序列化
定义
序列化:把对象转化为可传输的字节序列的过程称为序列化
反序列化:把字节序列还原为对象的过程称为反序列化。
--
作为开发者,序列化和反序列化一直是我们老生常谈的问题,也是非常琐碎但是重要的知识点。对于序列化与反序列化,我这里强烈推荐一篇博客,你可以从中更加深入了解他们。
这里作为待补充部分,后面学习完RPC后会重新更新这部分内容。
这里仅提供go中最简单的序列化方式:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
// 创建一个 Person 结构体实例
person := Person{Name: "Alice", Age: 30}
// 将 Person 结构体序列化为 JSON 格式的字节切片
jsonBytes, err := json.Marshal(person)
if err != nil {
fmt.Println("Failed to serialize:", err)
return
}
// 打印 JSON 字符串
fmt.Println("Serialized JSON:", string(jsonBytes))
// 将 JSON 字符串反序列化为 Person 结构体
var newPerson Person
err = json.Unmarshal(jsonBytes, &newPerson)
if err != nil {
fmt.Println("Failed to deserialize:", err)
return
}
// 打印反序列化后的 Person 结构体
fmt.Println("Deserialized Person:", newPerson)
}
结果
Serialized JSON: {"name":"Alice","age":30}
Deserialized Person: {Alice 30}