JSON 处理的阅读记录
type Server struct {
ServerName string
ServerIP string `json:"ServerIP"`
}
JSON 的 key 是 Foo,那么怎么找对应的字段呢?
type Serverslice struct {
Servers []Server
}
func main() {
var s Serverslice
str := `{"servers":[{"serverName":"Shanghai_VPN","serverIP":"127.0.0.1"},{"serverName":"Beijing_VPN","serverIP":"127.0.0.2"}]}`
json.Unmarshal([]byte(str), &s)
fmt.Println(s)
}
1.首先查找 tag 含有 Foo 的可导出的 struct 字段 (首字母大写)。只要含有tag标签的字段是可导出的,tag标签和字段key一样就可以了(tag大小写不敏感)
type Server struct {
ServerName string
ServerIPs string `json:"Serverip"`
}
这样字段不一样,但是tag一致就可以匹配上的
2.在没有tag标签的字段其次查找字段名是 Foo 的导出字段
type Server struct {
ServerName string
ServerIP string
}
3.最后查找类似 FOO 或者 FoO 这样的除了首字母之外其他大小写不敏感的导出字段
type Server struct {
ServerName string
Serverip string
}