省略JSON属性我有一个用户结构,它具有像密码敏感字段:golang - 优雅的方式被序列化
type User struct {
UID string `json:"uid" binding:"required"`
Password string `json:"password" binding:"required"`
EmailAddress string `json:"email" binding:"required"`
}
现在我希望能够利用这个结构来注册用户和更新,删除,但也可以查看。我不想要的是将密码序列化以供查看。当然,我可以做一个自定义编组,但这是唯一的方法吗?我尝试使用json:"-"
选项,但这会导致它在解组时被忽略,这是我不想要的。有没有更好的办法?
编辑: 为了让你们中的一些人放心,我当然不会以明文存储密码。这是密码的bcrypt散列,但仍然如此。我不希望它在我搜索用户时返回。
或者你可以使用2个结构体,一个带有“公共”信息和另一个嵌入公共的“完整”版本,并添加诸如密码之类的“私人”信息。在查看时,只发送/序列化嵌入式公共结构。例如,请参阅相关问题:[使用另一个结构赋值结构](https://stackoverflow.com/questions/31981592/assign-struct-with-another-struct/31981736#31981736)。 – icza
哦,这可能是最接近你的“优雅”,尤其是现在你可以用不同的标签来转换相同的结构。我仍然会在“自定义编组器”下标记它,但它比“JSONMarshaler”实现更简单。 – JimB