256_尚硅谷_序列化struct时 tag使用
1.结构体定义字段的反射机制
package main
import (
"encoding/json"
"fmt"
)
// 定义一个结构体
type Monster struct {
// ! 例:`json:"monster_name"`, 这是反射机制,理解为重定义序列化结构体后的字段名
Name string `json:"monster_name"`
Age int `json:"monster_age"`
Birthday string `json:"monster_birthday"`
Sal float64 `json:"monster_sal"`
Skill string `json:"monster_skill"`
}
func testStruct() {
// 演示
monster := Monster{
Name: "name1",
Age: 500,
Birthday: "2021-11-11",
Sal: 8000.0,
Skill: "skill1",
}
// 将monster序列化,使用json.Marshal方法执行序列化
data, err := json.Marshal(&monster)
if err != nil {
fmt.Printf("序列化错误, err= %v\n", err)
}
// 输出序列化后的结果
fmt.Printf("monster序列化后= %v\n", string(data))
}
func main() {
// 演示将结构体, map, 切片进行序列号
testStruct()
}
2.结构体字段名小写开头,则json.Marshal()方法不会序列化该字段
package main
import (
"encoding/json"
"fmt"
)
// 定义一个结构体
type Monster struct {
// ! 例:`json:"monster_name"`, 这是反射机制,理解为重定义序列化结构体后的字段名
// Name string `json:"monster_name"`
name string `json:"monster_name"`
Age int `json:"monster_age"`
Birthday string `json:"monster_birthday"`
Sal float64 `json:"monster_sal"`
Skill string `json:"monster_skill"`
}
func testStruct() {
// 演示
monster := Monster{
// Name: "name1",
name: "name1",
Age: 500,
Birthday: "2021-11-11",
Sal: 8000.0,
Skill: "skill1",
}
// 将monster序列化,使用json.Marshal方法执行序列化
data, err := json.Marshal(&monster)
if err != nil {
fmt.Printf("序列化错误, err= %v\n", err)
}
// 输出序列化后的结果
fmt.Printf("monster序列化后= %v\n", string(data))
}
func main() {
// 演示将结构体, map, 切片进行序列号
testStruct()
}
浙公网安备 33010602011771号