package main import ( "encoding/json" "fmt" ) // 结构体 与 JSON 互转 type Person struct { // 字段可见性 同标识符一样 与 首字母 大小写 有关 // 小写开头 的 字段 不会被 json.Marshal 解析 // 使用 tag 标签 标识需要转换的字段名 Name string `json:"name" db:"name" yaml:"name"` Age int `json:"age"` } func main() { p1 := &Person{ Name: "张三", Age: 20, } fmt.Printf("p1: %#v\n", p1) fmt.Println("=========================================================") // 序列化 结构体 => JSON j1, _ := json.Marshal(p1) fmt.Println(string(j1)) fmt.Println("=========================================================") // 反序列化 JSON => 结构体 p2 := new(Person) j2 := "{\"name\":\"李四\",\"age\":18}" // 需传入 结构体 指针 _ = json.Unmarshal([]byte(j2), p2) fmt.Printf("p2: %#v\n", p2) }