将子结构转换为字符串并返回

我在使用时遇到了一些麻烦UnmarshalJSON,MarshalJSON我不确定我是否正确理解了它们,或者至少我有一个我无法发现的错误,并且在我 3 小时的谷歌搜索中我还没有找到,所以就这样吧。


我有以下用户结构


type User struct {

    ID        uuid.UUID            `gorm:"primaryKey,type:string,size:36,<-:create" json:"id"`

    Username  string               `gorm:"unique" json:"username"`

    Password  PasswordHash         `gorm:"type:string" json:"password"`

    CreatedAt time.Time            `gorm:"autoCreateTime:milli" json:"created_at"`

    UpdatedAt time.Time            `gorm:"autoUpdateTime:milli" json:"updated_at,omitempty"`

    DeletedAt gorm.DeletedAt       `gorm:"index" json:"deleted_at,omitempty"`

}

当我尝试json.Marshal使用内置encoding/json库中的函数将其转换为 JSON 时,我得到以下信息:


{"id":"3843298e-74d4-4dd7-8eff-007ab34a4c19","username":"root","password":{},"created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":null}

我期待这样的事情:


{"id":"3843298e-74d4-4dd7-8eff-007ab34a4c19","username":"root","password":"$argon2id$v=19$m=4194304,t=1,p=64$Z9EFSTk26TQxx+Qv9g58gQ$4At0rvvv9trRcFZmSMXY0nISBuEt+1X8mCRAYbyXqSs","created_at":"0001-01-01T00:00:00Z","updated_at":"0001-01-01T00:00:00Z","deleted_at":null}


MMTTMM
浏览 79回答 1
1回答

慕码人8056858

您已经MarshalJSON定义了一个接收者*PasswordHash,但您的值是类型PasswordHash。将接收器更改为PasswordHash并按预期工作:https ://go.dev/play/p/WukE_5JBEPL
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go