亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

GORM 省略 JSON 響應中的字段

GORM 省略 JSON 響應中的字段

Go
三國紛爭 2023-01-03 14:11:26
我想在我的 JSON 響應中省略一些字段。目前我有一個返回新結構的類型接收器userToJson。然后我將其傳遞給json.NewEncoder(). 但是我想知道這是否是使用 GORM 省略字段的最佳方式。預先謝謝你!package serverimport (    "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,    }}
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

另一種方法是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)

}


查看完整回答
反對 回復 2023-01-03
?
喵喵時光機

TA貢獻1846條經驗 獲得超7個贊

你應該用所有字段的 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"`

}


查看完整回答
反對 回復 2023-01-03
  • 2 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號