beego 時間類型json格式問題

beego 時間類型json格式化問題
再使用beego的orm框架時,如果希望重新定義time.Time轉json的格式,我們可以重寫time.Time類型,這樣,就不用每次返回給客戶端的時候去手動轉了,代碼如下

package lib

import (
    "encoding/json"
    "fmt"
    "time"

    "github.com/astaxie/beego/orm"
)

type Time struct {
    time.Time
}

// MarshalJSON 序列化為JSON
func (t Time) MarshalJSON() ([]byte, error) {
    if t.IsZero() {
        return []byte("\"\""), nil
    }
    stamp := fmt.Sprintf("\"%s\"", t.Format("2006-01-02 15:04:05"))
    return []byte(stamp), nil
}

// UnmarshalJSON 反序列化為JSON
func (t *Time) UnmarshalJSON(data []byte) error {
    var err error
    t.Time, err = time.Parse("2006-01-02 15:04:05", string(data)[1:20])
    return err
}

// String 重寫String方法
func (t *Time) String() string {
    data, _ := json.Marshal(t)
    return string(data)
}

// FieldType 數據類型
func (t *Time) FieldType() int {
    return orm.TypeDateTimeField

}

// SetRaw 讀取數據庫值
func (t *Time) SetRaw(value interface{}) error {
    switch value.(type) {
    case time.Time:
        t.Time = value.(time.Time)
    }
    return nil
}

// RawValue 寫入數據庫
func (t *Time) RawValue() interface{} {
    str := t.Format("2006-01-02 15:04:05")
    if str == "0001-01-01 00:00:00" {
        return nil
    }
    return str
}

你只需要將默認的類型time.Time類型改為lib.Time就OK了

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數據結構(3).初始化時...
    歐辰_OSR閱讀 30,245評論 8 265
  • 關于Mongodb的全面總結 MongoDB的內部構造《MongoDB The Definitive Guide》...
    中v中閱讀 32,306評論 2 89
  • 我現在正在閱讀【美】莫提默.J.艾德勒 查爾斯 . 范多論 寫的《如何閱讀一本書》,恰巧我讀到了:如何閱讀抒情詩,...
    MH紅閱讀 325評論 0 0
  • 又是忙叨叨的一天吶,一句話,又沒學習,又有一屁股事情等著我。上午提著電腦,拿著書,好不容易到達圖書館,發(fā)現除了那本...
    獨行者87閱讀 179評論 0 1

友情鏈接更多精彩內容