go语言结构体与json数据相互转换

时间:2024-10-27 08:47:54

本博文简要介绍go语言结构体如何与json格式化字符串相互转换。

文章目录

  • go语言结构体转换为json数据
  • json数据转换为go结构体

go语言结构体转换为json数据

type Person struct {
	Name    string   `json:"name"`
	Age     int      `json:"age"`
	Hobbies []string `json:"hobbies"`
}
func main() {
	jsonStringData := `{"name":"Grorge","age":18,"hobbies":["Cycling","Cheese","Techno"]}`
	jsonByteData := []byte(jsonStringData)
	p := Person{}
	err := json.Unmarshal(jsonByteData, &p)
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%+v\n", p)

}

json数据转换为go结构体

type Person1 struct {
	Name    string   `json:"name,omitempty"`
	Age     int      `json:"age,omitempty"`
	Hobbies []string `json:"hobbies,omitempty"`
}

func main2() {
	hobbies := []string{"Cycling", "Cheese", "Techno"}
	p := Person1{
		Name:    "Grorge",
		Age:     18,
		Hobbies: hobbies,
	}
	fmt.Println(p)
	jsonByteData, err := json.Marshal(p)
	if err != nil {
		log.Fatal(err)
	}
	jsonStringData := string(jsonByteData)
	fmt.Println(jsonStringData)
}