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

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

golang 版本之間使用自定義解組器解析 json 的差異

golang 版本之間使用自定義解組器解析 json 的差異

Go
夢里花落0921 2021-11-29 19:37:50
我正在嘗試將針對 go1.3 編寫的一些代碼移植到當前版本,并遇到了 json 解析行為在版本之間不同的情況。我們正在使用自定義解組器來解析某些特定的日期格式??雌饋碜罱陌姹驹谧址袀鬟f了額外的引號,而 1.3 沒有。這是錯誤還是有意更改?在這種情況下,編寫與不同版本兼容的代碼的最佳方式是什么。只是去尋找所有使用自定義解組器的地方,如果有的話,總是去掉額外的引號?不得不這樣做會很遺憾 - 所以我希望有更好的方法。package mainimport "encoding/json"import "fmt"import "time"type Timestamp1 time.Timefunc (t *Timestamp1) UnmarshalJSON(b []byte) (err error) {    fmt.Println("String to parse as timestamp:", string(b))    parsedTime, err := time.Parse("2006-01-02T15:04:05", string(b))    if err == nil {        *t = Timestamp1(parsedTime)        return nil    } else {        return err    }}type S struct {    LastUpdatedDate Timestamp1 `json:"last_updated_date,string"`}func main() {    s := `{"last_updated_date" : "2015-11-03T10:00:00"}`    var s1 S    err := json.Unmarshal([]byte(s), &s1)    fmt.Println(err)    fmt.Println(s1)}
查看完整描述

1 回答

?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

一個錯誤json:",string"在于固定在1.5標簽。如果沒有特殊原因需要它,您可以刪除它并簡單地調整格式:

// N.B. time is in quotes.
parsedTime, err := time.Parse(`"2006-01-02T15:04:05"`, string(b))

游樂場:http : //play.golang.org/p/LgWuKcPEuI。

這應該適用于 1.3 和 1.5。


查看完整回答
反對 回復 2021-11-29
  • 1 回答
  • 0 關注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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