隐藏Golang Gorm中的字段

时间:2017-05-16 13:39:41

标签: json go go-gorm

我在Golang项目中使用Gorm。我有一个Rest-API,我得到一个请求来创建进程并返回一个对象,所以,例如我有一个像这样的结构用户:

type User struct {
    gorm.Model
    Password []byte
    Active bool
    Email string
    ActivationToken string
    RememberPasswordToken string
}

现在,当我创建一个用户时,我将其编码为JSON:

json.NewEncoder(w).Encode(user)

但是在客户端,我收到了一些我不想发送/接收的字段,例如:Created_At,Deleted_At,Updated_At,Password。那么,忽略或隐藏响应中的字段的最佳方法是什么?我看到我可以使用一个名为Reflect的库,但是对于一个简单的事情似乎有很多工作,我想知道是否有另一种方法。非常感谢你

2 个答案:

答案 0 :(得分:2)

正如Gavin所说,我建议有两个独立的模型,让模型能够转换为正确的返回类型。

模型/ user.go

package models

type User struct {
    gorm.Model
    Password []byte
    Active bool
    Email string
    ActivationToken string
    RememberPasswordToken string
}

func (u *User) UserToUser() app.User {
    return app.User{
        Email: u.Email
    }
}

应用程序/ user.go

package app

type User struct {
    Email string
}

答案 1 :(得分:0)

对我来说,将json:"-"添加到gorm.Model

例如:

type User struct {
    gorm.Model `json:"-"`
    Password []byte
    Active bool
    Email string
    ActivationToken string
    RememberPasswordToken string
}