Überwindung von Datumsformatdiskrepanzen in Golang XML Unmarshaling mit time.Time
Das Abrufen von XML-Daten über REST-APIs spesso stellt eine Herausforderung dar, wenn man versucht, das Unmarshaling durchzuführen die Daten in eine Golang-Struktur. Ein häufiges Problem tritt auf, wenn das von der API zurückgegebene Datumsformat nicht mit dem Standardformat für die Zeitanalyse übereinstimmt, was zu Unmarshaling-Fehlern führt.
In solchen Fällen ist es verlockend, auf die Verwendung einer Zeichenfolge zur Darstellung zurückzugreifen Datum/Uhrzeit-Feld, es ist jedoch vorzuziehen, ordnungsgemäß definierte Typen beizubehalten. Um dieses Problem zu beheben, wird in der Frage untersucht, ob es eine Methode zum Angeben eines benutzerdefinierten Datumsformats beim Unmarshaling in ein time.Time-Feld gibt.
Benutzerdefiniertes Unmarshaling mit xml.UnmarshalXML
Das XML-Codierungspaket der Standardbibliothek bietet eine Lösung über die xml.Unmarshaler-Schnittstelle. time.Time implementiert diese Schnittstelle jedoch nicht, was uns daran hindert, ein benutzerdefiniertes Datumsformat anzugeben.
Um diese Einschränkung zu überwinden, können wir einen neuen benutzerdefinierten Strukturtyp definieren, der ein time.Time-Feld umschließt und unser eigenes implementiert UnmarshalXML-Methode. Diese Methode analysiert die XML-Datumszeichenfolge mit unserem gewünschten Format und legt den zugrunde liegenden time.Time-Wert entsprechend fest.
Beispielimplementierung
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 }
Durch Verwendung dieses benutzerdefinierten UnmarshalXML Mit dieser Methode können wir effektiv unser eigenes Datumsformat angeben und sicherstellen, dass das Feld „time.Time“ beim Unmarshaling von XML-Daten korrekt ausgefüllt wird.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie lege ich beim Unmarshaling von XML in ein „time.Time'-Feld in Golang ein benutzerdefiniertes Datumsformat fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!