Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod JSON dengan Format Masa Bukan Standard?
Untuk menyahkod JSON dengan format masa bukan standard ke dalam struct tersuai, fungsi marshal dan unmarshal terbina dalam memberikan fleksibiliti.
Pertimbangkan JSON berikut:
{ "name": "John", "birth_date": "1996-10-07" }
Dan struct tersuai untuk menyimpan data:
type Person struct { Name string `json:"name"` BirthDate time.Time `json:"birth_date"` }
Menyahkod JSON ini menggunakan penyahkod lalai gagal kerana bukan -format masa standard. Untuk mengendalikan ini, laksanakan fungsi marshal dan unmarshal tersuai:
type JsonBirthDate time.Time 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 = JsonBirthDate(t) return nil } func (j JsonBirthDate) MarshalJSON() ([]byte, error) { return json.Marshal(time.Time(j)) }
Dengan menambahkan JsonBirthDate pada struct Person dan melaksanakan fungsi ini, kod berikut akan menyahkod JSON dengan betul:
person := Person{} decoder := json.NewDecoder(req.Body) err := decoder.Decode(&person) if err != nil { log.Println(err) } // person.BirthDate now contains the parsed time as a time.Time object
Atas ialah kandungan terperinci Bagaimana untuk Menyahkod JSON dengan Format Masa Bukan Standard?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!