加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang – 优雅的方式来省略json属性被序列化

发布时间:2020-12-16 09:22:41 所属栏目:大数据 来源:网络整理
导读:我有一个用户结构,它有敏感字段,如密码: type User struct { UID string `json:"uid" binding:"required"` Password string `json:"password" binding:"required"` EmailAddress string `json:"email" binding:"required"`} 现在我希望能够使用此结构来注册
我有一个用户结构,它有敏感字段,如密码:

type User struct {
    UID string `json:"uid"  binding:"required"`
    Password string `json:"password" binding:"required"`
    EmailAddress string `json:"email" binding:"required"`
}

现在我希望能够使用此结构来注册用户并更新,删除以及查看.我不想要的是密码被序列化以供查看.当然,我可以制作一个定制的编组,但这是唯一的方法吗?我尝试使用json:“ – ”选项,但这会导致它在解组时被忽略,这是我不想要的.有没有更好的办法?

编辑:
当然,为了让你们中的一些人放心,我不打算用明文存储密码.这是密码的bcrypt哈希,但仍然如此.我不希望在搜索用户时返回它.

解决方法

我想说实现json.Marshaler是一个优雅的解决方案,如果你想要自定义封送.在这种情况下,这很简单:

func (u User) MarshalJSON() ([]byte,error) {
    type user User // prevent recursion
    x := user(u)
    x.Password = ""
    return json.Marshal(x)
}

如果在编组时根本不想要密码字段,请在用户类型中添加“omitempty”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读