GORM 省略 JSON 响应中的字段

我想在我的 JSON 响应中省略一些字段。目前我有一个返回新结构的类型接收器userToJson。然后我将其传递给json.NewEncoder(). 但是我想知道这是否是使用 GORM 省略字段的最佳方式。


预先谢谢你!


package server


import (

    "gorm.io/gorm"

)


type User struct {

    gorm.Model

    FirstName string `gorm:"not null;default:null"`

    LastName  string `gorm:"not null;default:null"`

    Email     string `gorm:"not null;default:null;unique"`

    Password  string `gorm:"not null;default:null"`

    Posts     []Posts

}

type userToJson struct {

    Email string

    Posts []Posts

}


func (u *User) toJson() userToJson {

    return userToJson{

        Email: u.Email,

        Posts: u.Posts,

    }

}


三国纷争
浏览 245回答 2
2回答

繁星coding

另一种方法是Marshaler为您的类型实现接口,以修改编组到 JSON 的工作方式。该json包在编组之前检查该接口,如果存在,则调用该函数。这是标准库中的接口。type Marshaler interface {    MarshalJSON() ([]byte, error)}您的类型的一个示例实现User如下。func (u *User) MarshalJSON() ([]byte, error) {    type Temp struct {        Email string        Posts []Post    }    t := Temp{        Email: u.Email,        Posts: u.Posts,    }    return json.Marshal(&t)}

喵喵时光机

你应该用所有字段的 json 标记声明你的结构,Behrooz 在评论中建议的应该可以正常工作type User struct {    gorm.Model    FirstName string `json:"-" gorm:"not null;default:null"`    LastName  string `json:"-" gorm:"not null;default:null"`    Email     string `json:"email" gorm:"not null;default:null;unique"`    Password  string `json:"-" gorm:"not null;default:null"`    Posts     []Posts`json:"posts"`}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go