为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用 mgo 从文档中解组命名类型别名?

如何使用 mgo 从文档中解组命名类型别名?

Go
慕虎7371278 2021-08-16 15:44:20
我有一个带有 updated_at 字段的结构,我想将其编码为 JSON 时间戳。我尝试了以下似乎不起作用的方法,updated_at 字段永远不会从 MongoDB 文档中解组:type Timestamp time.nowfunc (t Timestamp) MarshalJSON() ([]byte, error) {    ts := time.Time(t).Unix()    fmt.Println(ts)    stamp := fmt.Sprint(ts)    return []byte(stamp), nil}type User struct {    UpdatedAt *Timestamp `bson:"updated_at,omitempty" json:"updated_at,omitempty"`}我找到了一个临时解决方案,编写结构的 MarshalJSON 函数,执行如下操作(将 UpdatedAt 类型更改为 *time.Time):func (u *User) MarshalJSON() ([]byte, error) {    out := make(map[string]interface{})    if u.UpdatedAt != nil && !u.UpdatedAt.IsZero() {        out["updated_at"] = u.UpdatedAt.Unix()    }    return json.Marshal(out)}有没有更好或更优雅的解决方案来做到这一点?
查看完整描述

2 回答

?
温温酱

TA贡献1752条经验 获得超4个赞

您的代码不起作用,因为您需要MarshalJSON*Timestampnot上实现Timestamp

func (t *Timestamp) MarshalJSON() ([]byte, error) { .... }


查看完整回答
反对 回复 2021-08-16
  • 2 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信