我有一个带有 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)
}
有没有更好或更优雅的解决方案来做到这一点?
温温酱
相关分类