在使用 Go 语言的过程中,有时间出现需要将 JSON 数据转化为 Go 能处理的数据结构。
假如有这样一个 JSON 文件:
{
"name":"yuzhou1su",
"age":18,
"address":{
"road":"renmin south road",
"street":"123 street",
"city":"cs",
"province":"hn",
"country":"cn"
}
}
在定义 Go 结构体的过程中,我们会定义这样的结构体来接收这个 JSON 数据:
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address struct {
Road string `json:"road"`
Street string `json:"street"`
City string `json:"city"`
Province string `json:"province"`
Country string `json:"country"`
} `json:"address"`
}
但是好像定义为也没什么问题:
type Person struct {
Name string
Age int
Address struct {
Road string
Street string
City string
Province string
Country string
}
}
问题来了:Name string 后面跟的 json:"name"
和其他 json:"age"
有什么实际含义呢?
本文参与了SegmentFault 思否面试闯关挑战赛,欢迎正在阅读的你也加入。
如果数据都是正常的,那定义或者不定义都行。
但是从可读性和严谨来看,定义 tag 是有必要的
有可能需要返回的并不是
name
,而是Name
,这时候就需要将 tag 设置成json:"Name"