Go語言中的JSON庫可以很方便地將數據結構轉換為JSON格式的文本。而時間類型在JSON中有特殊的表示方式。
package main import ( "encoding/json" "fmt" "time" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Birthday time.Time `json:"birthday"` } func main() { now := time.Now() p := Person{Name: "Jack", Age: 18, Birthday: now} data, err := json.MarshalIndent(p, "", " ") if err != nil { fmt.Println("error:", err) } fmt.Println(string(data)) }
在將上述Person
類型的實例序列化成JSON時,Birthday
字段將會被轉換為RFC 3339格式的字符串:
{ "name": "Jack", "age": 18, "birthday": "2022-09-20T11:45:00+08:00" }
如果想要從JSON中將時間字符串反序列化為時間類型,則需要使用time.Parse
函數,如下所示:
func main() { input := []byte(`{"name":"Jack","age":18,"birthday":"2022-09-20T11:45:00+08:00"}`) var p Person err := json.Unmarshal(input, &p) if err != nil { fmt.Println("error:", err) } fmt.Println(p.Birthday) }
運行上述代碼,輸出結果為:
2022-09-20 11:45:00 +0800 CST
可以看到,Birthday
字段已經被成功地解析為時間類型。
上一篇python 數值計算庫
下一篇mysql創建外鍵的方式