// 序列化、反序列化 package main import ( "encoding/json" "fmt" ) type person struct { Name string `json:"name"` //强制字段名小写 Age int `json:"age"` } func main() { // 序列化 golang结构体 => JSON字符串 p1 := person{ Name:"小麦客", Age:666, } slice_of_byte, err := json.Marshal(p1) // json.Marshal(struct_obj) if err != nil{ fmt.Printf("当前JSON对象的内容为%s,查看结构体字段是否大写\n", string(slice_of_byte)) }else { fmt.Println(string(slice_of_byte)) } // 反序列化 JSON字符串 => golang结构体 json_str_obj := `{"Name":"麦子", "Age": 666}` p2 := person{} //准备一个结构体类型的变量, 结构反序列化的值 //p2 := new(person) //err1 := json.Unmarshal(slice_of_byte, &p2) err1 := json.Unmarshal([]byte(json_str_obj), &p2) // json.Unmarshal(byte类型的切片, 指针类型的变量) if err1 != nil{ fmt.Printf("error of %#v\n", err1) } fmt.Println(p2) }