json - 在 Golang Gorm 中隐藏字段

标签 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 的库,但对于一个简单的事情来说似乎需要做很多工作,我想知道是否还有其他方法。非常感谢

最佳答案

如果你想有一个固定的对象返回,你可以用json:"-"改变标签来决定用json发送的元素。 对于 gorm.Model 中的元素:

type Model struct {
    ID        uint `gorm:"primary_key"`
    CreatedAt time.Time
    UpdatedAt time.Time
    DeletedAt *time.Time `sql:"index"`
}

您可以用它们替换您自己的结构:

type OwnModel struct {
    ID        uint       `gorm:"primary_key"`
    CreatedAt time.Time  `json:"-"`
    UpdatedAt time.Time  `json:"-"`
    DeletedAt *time.Time `json:"-";sql:"index"`
}

所以,你的用户结构应该是这样的:

type User struct {
    OwnModel
    Password []byte
    Active bool
    Email string
    ActivationToken string
    RememberPasswordToken string
}

The other User fields is your decision to add or not `json:"-"` tag.

关于json - 在 Golang Gorm 中隐藏字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44003152/

相关文章:

javascript - 为什么使用 JSON.parse 从字符串中获取的对象不等于使用 JSON.stringify 转换的原始对象?

c# - 使用 C# API 进行 iOS 开发

c# - HttpClient POST 到 WCF 返回 400 错误请求

go - 在 go build 中包含一个共享库

Golang appmon 类似于 Erlang 的 appmon

database - PREPARE 语句在几次调用后决定不使用索引,即使它更慢

go - Gorm查询仅返回单行

javascript - Backbone : Create collection from JSON error

http - 往返旅行和运输

go - "Creation At"GORM 自定义联接表中的时间