首页 > 解决方案 > 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

标签: gogo-gorm

解决方案


我遇到了类似的错误,发现user := database.DBConn.Create(&newUser)返回的 *gorm.DB 不能被 JSON 封送。

而是使用这个:

database.DBConn.Create(&newUser)
return c.Status(http.StatusCreated).JSON(newUser)

它对我有用,我希望它也对你有用。


推荐阅读