1 回答

TA贡献1966条经验 获得超4个赞
下面是一个 JSON 示例,因为它是内置的:
package main
import (
"encoding/json"
"fmt"
)
func main() {
s := `
{
"server": {"host": "127.0.0.1", "path": "/some/silly/path", "port": 8080}
}
`
var config struct {
Server struct {
Host, Path string
Port int
}
}
json.Unmarshal([]byte(s), &config)
fmt.Printf("%+v\n", config)
}
所以正如你所注意到的,我根本没有使用任何标签。规则在这里:
要将 JSON 取消到结构中,Unmarshal 将传入的对象键与 Marshal 使用的键(结构字段名称或其标记)匹配,首选完全匹配,但也接受不区分大小写的匹配。
https://golang.org/pkg/encoding/json/#Unmarshal
因此,只要 JSON 键与结构字段匹配(无论大小写如何),您就不需要标签。否则,您就会这样做。通常,您可以避免使用标记,除非您只想在结构中使用其他标记,或者如果 JSON 键具有连字符,例如:
{"need-tag-for-this": 10}
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报