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

我有一个带有 updated_at 字段的结构,我想将其编码为 JSON 时间戳。


我尝试了以下似乎不起作用的方法,updated_at 字段永远不会从 MongoDB 文档中解组:


type Timestamp time.now


func (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)

}

有没有更好或更优雅的解决方案来做到这一点?


慕虎7371278
浏览 191回答 2
2回答

温温酱

您的代码不起作用,因为您需要MarshalJSON在*Timestampnot上实现Timestamp。func (t *Timestamp) MarshalJSON() ([]byte, error) { .... }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go