mirror of
https://gitee.com/shikong-sk/golang-study
synced 2025-02-24 16:02:15 +08:00
41 lines
883 B
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)
|
||
|
}
|