在Go语言中,序列化和反序列化是将数据结构转换为字节流和从字节流还原数据结构的过程。这些过程在数据持久化、网络通信等场景中非常重要。Go语言主要使用标准库中的encoding/json
和encoding/gob
来实现序列化和反序列化。
JSON 序列化和反序列化
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。Go语言通过encoding/json
包来实现JSON的序列化和反序列化。
序列化(将Go结构体转换为JSON)
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
p := Person{Name: "Alice", Age: 30}
jsonData, err := json.Marshal(p)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(jsonData))
}
上述代码中,json.Marshal
函数将结构体Person
序列化为JSON格式的字节流。
反序列化(将JSON转换为Go结构体)
package main
import (
"encoding/json"
"f