亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我怎樣才能在 json 中響應時間毫秒零

我怎樣才能在 json 中響應時間毫秒零

Go
慕標5832272 2023-04-17 15:23:59
在我的 mongodb 中,我有字段"createdAt" : ISODate("2018-10-02T01:17:58.000Z")我有結構有字段CreatedAt      time.Time       `json:"createdAt" bson:"createdAt"`但是當我通過 json 響應時,它缺少我預期的零毫秒"createdAt": "2018-10-02T01:17:58.000Z"但收到"createdAt": "2018-10-02T01:17:58Z"
查看完整描述

1 回答

?
ibeautiful

TA貢獻1993條經驗 獲得超6個贊

來自 golang.org/pkg/time/#Time.MarshalJSON:


時間是 RFC 3339 格式的帶引號的字符串,如果存在則添加亞秒級精度。


零是無關緊要的,所以它們被省略了。如果這對您不起作用,請實施您自己的 MarshalJSON 方法:


package main


import (

    "encoding/json"

    "fmt"

    "time"

)


type MyType struct {

    Foo       string

    CreatedAt time.Time `json:"-" bson:"createdAt"`

}


func (t MyType) MarshalJSON() ([]byte, error) {

    type MyType_ MyType // prevent recursion


    return json.Marshal(struct {

        MyType_

        CreatedAt string `json:"createdAt"` // Override time field

    }{

        MyType_(t),

        t.CreatedAt.Format("2006-01-02T15:04:05.000Z07:00"),

    })

}


func main() {

    t := MyType{

        Foo:       "bar",

        CreatedAt: time.Date(2018, 10, 2, 12, 13, 14, 0, time.UTC),

    }


    b, err := json.MarshalIndent(t, "", "  ")

    fmt.Println(err, string(b))


    t.CreatedAt = t.CreatedAt.Add(123456 * time.Microsecond)


    b, err = json.MarshalIndent(t, "", "  ")

    fmt.Println(err, string(b))

}


// Output:

// <nil> {

//   "Foo": "bar",

//   "T": "2018-10-02T12:13:14.000Z"

// }

// <nil> {

//   "Foo": "bar",

//   "T": "2018-10-02T12:13:14.123Z"

// }

https://play.golang.org/p/bmDk1pejGPS


如果你必須在很多地方這樣做,創建你自己的時間類型可能是值得的(如果你必須做日期數學,那將是不方便的,雖然):


type MyType struct {

        Foo       string

        CreatedAt MyTime `json:"createdAt" bson:"createdAt"`

}


type MyTime struct {

        time.Time

}


func (t MyTime) MarshalJSON() ([]byte, error) {

        return json.Marshal(t.Format("2006-01-02T15:04:05.000Z07:00"))

}


查看完整回答
反對 回復 2023-04-17
  • 1 回答
  • 0 關注
  • 116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號