package dto import ( "encoding/json" "time" ) // 自定义时间格式 const customTimeFormat = "2006-01-02 15:04:05" func (t *Task) UnmarshalJSON(data []byte) error { type Alias Task aux := &struct { StartTime string `json:"startTime"` EndTime string `json:"endTime"` *Alias }{ Alias: (*Alias)(t), } if err := json.Unmarshal(data, &aux); err != nil { return err } var err error t.StartTime, err = time.ParseInLocation(customTimeFormat, aux.StartTime, time.Local) if err != nil { return err } t.EndTime, err = time.ParseInLocation(customTimeFormat, aux.EndTime, time.Local) if err != nil { return err } return nil } type Task struct { TaskID string `json:"taskId"` ScenicID string `json:"scenicId"` DeviceID string `json:"deviceId"` DeviceNo string `json:"deviceNo"` StartTime time.Time `json:"startTime"` EndTime time.Time `json:"endTime"` } type FileObject struct { URL string `json:"url"` NeedDownload bool `json:"needDownload"` CreateTime time.Time `json:"createTime"` EndTime time.Time `json:"endTime"` } func (f *FileObject) MarshalJSON() ([]byte, error) { type Alias FileObject return json.Marshal(&struct { CreateTime string `json:"createTime"` EndTime string `json:"endTime"` *Alias }{ CreateTime: f.CreateTime.Format(customTimeFormat), EndTime: f.EndTime.Format(customTimeFormat), Alias: (*Alias)(f), }) }