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

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

時間 JSON 編組為 0 時間

時間 JSON 編組為 0 時間

Go
慕萊塢森 2023-06-19 15:35:01
我有以下代碼,主要編組和取消編組時間結構。這是代碼package mainimport (    "fmt"    "time"    "encoding/json")type check struct{    A time.Time `json:"a"`}func main(){    ds := check{A:time.Now().Truncate(0)}    fmt.Println(ds)    dd, _ := json.Marshal(ds)    d2 := check {}    json.Unmarshal(dd, d2)    fmt.Println(d2)}這是它產生的輸出{2019-05-20 15:20:16.247914 +0530 IST}{0001-01-01 00:00:00 +0000 UTC}第一行是原始時間,第二行是解組后的時間。為什么我們會因轉換而丟失這種信息JSON?如何防止這種情況?謝謝。
查看完整描述

1 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

Go vet 會準確告訴您問題出在哪里:

./prog.go:18:16: Unmarshal 的調用將非指針作為第二個參數傳遞

永遠不要忽略錯誤!您至少可以打印它:

ds := check{A: time.Now().Truncate(0)}

fmt.Println(ds)

dd, err := json.Marshal(ds)

fmt.Println(err)

d2 := check{}

err = json.Unmarshal(dd, d2)

fmt.Println(err)

fmt.Println(d2)

這將輸出(在Go Playground上嘗試):

{2009-11-10 23:00:00 +0000 UTC}

<nil>

json: Unmarshal(non-pointer main.check)

{0001-01-01 00:00:00 +0000 UTC}

您必須傳遞一個指針才能json.Unmarshal()將其解組為(更改)您的值:

err?=?json.Unmarshal(dd,?&d2)

使用此更改輸出將是(在Go Playground上嘗試):

{2009-11-10?23:00:00?+0000?UTC}
<nil>
<nil>
{2009-11-10?23:00:00?+0000?UTC}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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