Golang 结构体 Tag 解析教程:使用 reflect 包解析 JSON 标签
在 Go 语言中,结构体可以使用 tag(标签)来标识字段的元数据,例如 JSON、XML 等。tag 是一个字符串,以反引号 ` 包围,例如:
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Birthday string `json:"birthday,omitempty"`
}
这里的 tag 指定了 JSON 序列化时对应的字段名和可选字段的忽略条件。
要解析 tag,可以使用 reflect 包中的 Type 和 StructTag 函数。示例代码如下:
package main
import (
"fmt"
"reflect"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
Birthday string `json:"birthday,omitempty"`
}
func main() {
u := User{Name: "John", Age: 30}
t := reflect.TypeOf(u)
for i := 0; i < t.NumField(); i++ {
f := t.Field(i)
fmt.Printf("%s: %s\n", f.Name, f.Tag.Get("json"))
}
}
输出结果为:
Name: name
Age: age
Birthday: birthday,omitempty
这里使用 reflect.TypeOf 获取结构体类型,然后遍历结构体的字段。对于每个字段,使用 f.Tag.Get("json") 获取 JSON tag 的值。注意,如果 tag 中没有指定 JSON,则返回空字符串。
原文地址: https://www.cveoy.top/t/topic/n65q 著作权归作者所有。请勿转载和采集!