Unmarshaling inkonsistenter Datetime-Formate
Beim Umgang mit JSON-Daten kann das Unmarshaling von Datetimes aufgrund unterschiedlicher Zeitzonen-Offsetformate zu Inkonsistenzen führen. Während der Standard-Parsing-Mechanismus von Go Zeitzonen-Offsets im Format 02:00 erwartet, enthalten einige Daten möglicherweise falsche Formate wie 0200.
Um dieses Problem zu beheben, bietet Go eine benutzerdefinierte Unmarshaling-Methode, um sowohl korrekte als auch falsche Zeitzonenformate zu verarbeiten. Hier ist ein überarbeiteter Ansatz:
type MyTime struct { time.Time } func (self *MyTime) UnmarshalJSON(b []byte) (err error) { s := string(b) // Remove quotation marks s = s[1:len(s)-1] // Attempt to parse using RFC3339Nano format t, err := time.Parse(time.RFC3339Nano, s) if err != nil { // If parsing fails, try custom format without ':' t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s) } self.Time = t return } type Test struct { Time MyTime `json:"time"` }
In dieser benutzerdefinierten Unmarshaling-Methode (UnmarshalJSON) führen wir:
Dieser Ansatz gewährleistet dass sowohl korrekte als auch falsch formatierte Datums-/Uhrzeitzeichenfolgen korrekt analysiert werden.
Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich inkonsistente Datetime-Formate in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!