Mengatasi Percanggahan Format Tarikh dalam Golang XML Unmarshal dengan masa.Masa
Mengambil semula data XML melalui REST APIs spesso memberikan cabaran apabila cuba unmarshal data ke dalam struktur Golang. Satu isu yang kerap timbul apabila format tarikh yang dikembalikan oleh API tidak sejajar dengan masa lalai.Format penghuraian masa, mengakibatkan kegagalan unmarshaling.
Dalam kes sedemikian, tergoda untuk menggunakan rentetan untuk mewakili medan datetime, tetapi mengekalkan jenis yang ditakrifkan dengan betul adalah lebih baik. Untuk menangani isu ini, soalan meneroka sama ada terdapat kaedah untuk menentukan format tarikh tersuai apabila menyahmarshaling ke dalam medan masa.
Menyahmarshaling Tersuai dengan xml.UnmarshalXML
Pakej pengekodan xml perpustakaan standard menawarkan penyelesaian melalui antara muka xml.Unmarshaler. Walau bagaimanapun, time.Time tidak melaksanakan antara muka ini, menghalang kami daripada menentukan format tarikh tersuai.
Untuk mengatasi had ini, kami boleh mentakrifkan jenis struktur tersuai baharu yang membungkus medan masa.Masa dan melaksanakan kami sendiri Kaedah UnmarshalXML. Kaedah ini akan menghuraikan rentetan tarikh XML menggunakan format yang kami kehendaki dan menetapkan masa asas. Nilai masa dengan sewajarnya.
Contoh Pelaksanaan
type Transaction struct { //... DateEntered customTime `xml:"enterdate"` // Use our custom type that implements UnmarshalXML //... } type customTime struct { time.Time } func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { const shortForm = "20060102" // yyyymmdd date format var v string d.DecodeElement(&v, &start) parse, err := time.Parse(shortForm, v) if err != nil { return err } *c = customTime{parse} return nil }
Dengan menggunakan UnmarshalXML tersuai ini kaedah, kami boleh menentukan format tarikh kami sendiri dengan berkesan dan memastikan bahawa medan masa.Masa diisi dengan betul apabila menyahmarshaling data XML.
Nota Tambahan
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Format Tarikh Tersuai Apabila Menyahmarshaling XML ke dalam Medan `time.Time` di Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!