Unmarshalieren von XML-Feldern vom Typ time.Time in Golang
Beim Arbeiten mit dem XML-Datenabruf mithilfe der REST-API in Golang ist dies nicht der Fall Es kommt selten vor, dass ein Datumsfeld nicht dem Standardformat „time.Time“ entspricht. Diese Diskrepanz kann zu Unmarshaling-Fehlern führen, wenn versucht wird, das abgerufene Datum einem time.Time-Feld in einer GO-Struktur zuzuweisen.
Leider gibt es keine einfache Möglichkeit, das gewünschte Datumsformat explizit für die Unmarshal-Funktion anzugeben. Es gibt jedoch eine Problemumgehung, bei der eine benutzerdefinierte Struktur definiert wird, um das Datumsfeld im gewünschten Format darzustellen.
So kann dies erreicht werden:
Hier ist ein Beispielcode, der diesen Ansatz demonstriert:
type Transaction struct { // ... other fields DateEntered customTime `xml:"enterdate"` // Use customTime to handle specific date format } type customTime struct { time.Time } func (c *customTime) UnmarshalXML(d *xml.Decoder, start xml.StartElement) error { const shortForm = "20060102" // Custom date format: "yyyymmdd" var v string d.DecodeElement(&v, &start) parse, err := time.Parse(shortForm, v) if err != nil { return err } *c = customTime{parse} return nil }
Durch die Verwendung dieses Ansatzes können Sie die Einschränkung der Angabe eines Datumsformats während des Unmarshaling-Prozesses überwinden und nahtlos mit Datumsangaben umgehen, die nicht dem Standardformat entsprechen.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich XML-Felder vom Typ time.Time mit benutzerdefinierten Datumsformaten in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!