主题
JSON 与结构体映射(encoding/json)
Go 标准库提供 encoding/json
包,用于 JSON 数据与结构体的转换。
1. 结构体标签
使用 json
标签指定字段对应的 JSON 键名:
go
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
}
2. JSON 编码(序列化)
将结构体转为 JSON 字符串:
go
import "encoding/json"
p := Person{Name: "Alice", Age: 30}
data, err := json.Marshal(p)
if err != nil {
panic(err)
}
fmt.Println(string(data)) // 输出:{"name":"Alice","age":30}
3. JSON 解码(反序列化)
将 JSON 字符串转换为结构体:
go
var p Person
jsonStr := `{"name":"Bob","age":25}`
err := json.Unmarshal([]byte(jsonStr), &p)
if err != nil {
panic(err)
}
fmt.Println(p.Name, p.Age) // 输出:Bob 25
4. 忽略字段
使用 json:"-"
标签忽略字段:
go
type Person struct {
Name string `json:"name"`
Age int `json:"-"`
}
通过 JSON 与结构体的映射,实现数据交换和持久化。