golang-study/base/struct/json/main.go

41 lines
883 B
Go

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)
}