当您需要实现自定义marshal和unmarshal函数时,就是这种情况。
UnmarshalJSON(b []byte) error { ... } MarshalJSON() ([]byte, error) { ... }通过遵循json package的Golang文档中的示例,您可以获得如下内容:
// first create a type alias type JsonBirthDate time.Time // Add that to your struct type Person struct { Name string `json:"name"` BirthDate JsonBirthDate `json:"birth_date"` } // imeplement Marshaler und Unmarshalere interface func (j *JsonBirthDate) UnmarshalJSON(b []byte) error { s := strings.Trim(string(b), "\"") t, err := time.Parse("2006-01-02", s) if err != nil { return err } *j = JB(t) return nil } func (j JsonBirthDate) MarshalJSON() ([]byte, error) { return json.Marshal(j) } // Maybe a Format function for printing your date func (j JsonBirthDate) Format(s string) string { t := time.Time(j) return t.Format(s) }