【Go】go序列化与go反序列化

目录

go序列化

 go反序列化


go序列化

在Go语言中,可以使用标准库中的encoding/json包将结构体序列化为JSON字符串。具体方法是使用json.Marshal()函数。下面是一个示例:

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name    string `json:"name"`
	Age     int    `json:"age"`
	Address string `json:"address,omitempty"`
}

func main() {
	p := Person{"张三", 20, ""}

	b, err := json.Marshal(p)
	if err != nil {
		fmt.Println("序列化失败:", err)
		return
	}
	fmt.Println(string(b))
}

 在上述代码中,定义了一个Person结构体,并初始化了一个Person类型的变量p。通过调用json.Marshal()函数将p序列化为JSON字符串,并将结果打印出来。

需要注意的是,在Person结构体中添加了json元素标签,这些标签指定了每个成员在生成的JSON字符串中对应的名称。omitempty则表示当成员为空时,不需要在JSON字符串中生成该成员。

如果要让JSON字符串更加美观,可以使用json.MarshalIndent()函数,它提供了类似于Python中的缩进功能。下面是一个示例:

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name    string `json:"name"`
	Age     int    `json:"age"`
	Address string `json:"address,omitempty"`
}

func main() {
	p := Person{"张三", 20, ""}

	b, err := json.MarshalIndent(p, "", "    ")
	if err != nil {
		fmt.Println("序列化失败:", err)
		return
	}
	fmt.Println(string(b))
}

扫描二维码关注公众号,回复: 16060729 查看本文章

 go反序列化

在Go语言中,可以使用标准库中的encoding/json包将JSON字符串反序列化为结构体。具体方法是使用json.Unmarshal()函数。以下是一个示例:

package main

import (
	"encoding/json"
	"fmt"
)

type Person struct {
	Name    string `json:"name"`
	Age     int    `json:"age"`
	Address string `json:"address,omitempty"`
}

func main() {
	var p Person

	jsonStr := `{"name":"张三","age":20}`
	err := json.Unmarshal([]byte(jsonStr), &p)
	if err != nil {
		fmt.Println("反序列化失败:", err)
		return
	}
	fmt.Println(p)
}

 以上就是在Go语言中将JSON字符串反序列化为结构体的方法。需要注意的是,序列化时可以使用json.Marshal()函数。

猜你喜欢

转载自blog.csdn.net/fanjufei123456/article/details/132103174