序列化與反序列化(GO)

AtongM發表於2024-05-28

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}

相關文章