go - json:不支持的类型:func() time.Time Marshaling CreatedAt、UpdatedAt 和 DeletedAt
问题描述
如何解决json: unsupported type: func() time.Time
尝试将新保存的模型返回为 JSON 的错误。
user := database.DBConn.Create(&newUser)
return c.Status(http.StatusCreated).JSON(user) // fiber response
尝试忽略时间戳字段。
type User struct {
gorm.Model
ID uuid.UUID `gorm:"primary_key;type:uuid;default:uuid_generate_v4()"`
Phone string `json:"phone"`
FirstName string `json:"firstName"`
LastName string `json:"lastName"`
Email string `json:"email"`
CreatedAt time.Time `json:"-"`
UpdatedAt time.Time `json:"-"`
DeletedAt time.Time `json:"-"`
}
也试过
CreatedAt time.Time `gorm:"type:timestamp" json:"created_at,string,omitempty"`
UpdatedAt time.Time `gorm:"type:timestamp" json:"updated_at,string,omitempty"`
DeletedAt time.Time `gorm:"type:timestamp" json:"deleted_at,string,omitempty"`
和
CreatedAt time.Time `gorm:"type:datetime" json:"created_at,string,omitempty"`
UpdatedAt time.Time `gorm:"type:datetime" json:"updated_at,string,omitempty"`
DeletedAt time.Time `gorm:"type:datetime" json:"deleted_at,string,omitempty"`
使用 gorm v1.20.12 和 Go 1.15.6
解决方案
我遇到了类似的错误,发现user := database.DBConn.Create(&newUser)
返回的 *gorm.DB 不能被 JSON 封送。
而是使用这个:
database.DBConn.Create(&newUser)
return c.Status(http.StatusCreated).JSON(newUser)
它对我有用,我希望它也对你有用。