序列化与反序列化(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}
posted @ 2024-05-28 13:04  AtongM  阅读(33)  评论(0编辑  收藏  举报