package main
import (
"encoding/json"
"fmt"
)
type User struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
user := User{
Name: "John",
Age: 30,
}
data, err := json.Marshal(user)
if err != nil {
fmt.Println("序列化失败:", err)
return
}
fmt.Println(string(data))
}
struct标签的作用
- 控制字段在JSON中的名称:在上述代码中,
json:"name"
和json:"age"
这样的标签指定了结构体字段在JSON格式字符串中的名称。如果没有这个标签,JSON序列化后的字段名将会和结构体字段名一致(在Go语言中,结构体字段名首字母大写才会在包外可见,而JSON一般使用小写字母开头的字段名)。使用标签可以确保生成的JSON符合常见的命名规范。
- 控制字段的序列化行为:例如,标签
json:"-"
可以使该字段不被序列化到JSON字符串中。如果有一些结构体字段是内部使用,不希望出现在JSON输出中,就可以使用这个标签。