假设我在用户结构中有一个密码字段。
type User struct{
UserName string `json:"username"`
Password string `json:"-"`
}
我的客户通过同时发布用户名和密码来注册他们的用户。因此,如果我将 JSON 解码为上述结构,它会忽略密码。这是预期的。但我想知道只有编码时有什么方法可以忽略字段。我检查了 go 官方文档页面,但找不到任何东西。
https://golang.org/pkg/encoding/json/
我可以在结构中添加一个额外的字段,但我首先需要知道是否可以使用 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)
}
关于json - 编码不解码时如何忽略 JSON 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47256201/