Go語言(Golang)的JSON包提供了一種非常方便的方式,用于將JSON數據從字符串或字節切片中解碼為Go語言的數據類型。在處理JSON數據時,有時會遇到時間字符串的情況,那么該如何在Golang中接受時間字符串呢?
Golang中的時間類型為time.Time,而JSON解析器默認情況下只接受RFC3339格式的時間字符串,類似于“2006-01-02T15:04:05Z07:00”。如果你想使用其他格式的時間字符串,可以通過實現UnmarshalJSON方法并定義自己的時間類型來實現。
下面是一個示例,展示了如何接受時間字符串:
type CustomTime time.Time const ctLayout = "2006-01-02" func (ct *CustomTime) UnmarshalJSON(b []byte) error { s := strings.Trim(string(b), `"`) t, err := time.Parse(ctLayout, s) if err != nil { return err } *ct = CustomTime(t) return nil }
在上面的示例中,我們定義了自己的時間類型CustomTime,并實現了UnmarshalJSON方法。我們使用常量ctLayout來定義我們想要接受的時間格式,然后在UnmarshalJSON方法中使用time.Parse函數解析時間字符串,如果解析失敗,則返回錯誤,否則我們將時間類型轉換為我們自定義的時間類型CustomTime。
現在,我們可以在JSON數據中使用我們定義的時間字符串格式了:
type Person struct { Name string `json:"name"` Age int `json:"age"` Time CustomTime `json:"time"` } func main() { data := `{ "name": "Tom", "age": 20, "time": "2021-01-01" }` var p Person err := json.Unmarshal([]byte(data), &p) if err != nil { panic(err) } fmt.Println(p) }
在上面的示例中,我們定義了一個名為Person的結構體,其中使用了我們自定義的時間類型CustomTime,并在JSON標簽中指定了我們想要的鍵名。然后,我們使用json.Unmarshal函數將JSON數據解析為Person類型,最后打印輸出該結構體。
現在,我們已經成功地接受了時間字符串,并將其轉換為我們自定義的時間類型CustomTime。
上一篇python 輸出熱度圖
下一篇mysql分鐘減法