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 關注
- 104 瀏覽
添加回答
舉報