假设我在User结构中有一个密码字段。
type User struct{ UserName string `json:"username"` Password string `json:"-"` }
我的客户通过一起发布用户名和密码来注册用户。因此,如果我将JSON解码为上述struct,它将忽略密码。可以预料的 但是我想知道是否只有编组时才能忽略字段。我检查了官方文档页面,但找不到任何东西。
https://golang.org/pkg/encoding/json/
我可以在结构中添加一个额外的字段,但我首先需要知道是否可以使用JSON lib做到这一点。
一种常见的方法是使用结构相同但json标签不同甚至结构不同的临时类型或变量:
json
type User struct { UserName string `json:"username"` Password string `json:"password"` } func (usr User) MarshalJSON() ([]byte, error) { var tmp struct { UserName string `json:"username"` } tmp.UserName = usr.UserName return json.Marshal(&tmp) }