Heim >Backend-Entwicklung >Golang >Wie analysiere ich nicht standardmäßige Zeitformate von JSON in Golang?
Parsen eines nicht standardmäßigen Zeitformats aus JSON
Beim Dekodieren von JSON-Daten in eine benutzerdefinierte Struktur können Inkonsistenzen in den Datumsformaten auftreten. Um dieses Problem zu beheben, bietet Golang die Möglichkeit, benutzerdefinierte Marshal- und Unmarshal-Funktionen zu implementieren.
Benutzerdefinierte Marshaler- und Unmarshaler-Funktionen
Um ein benutzerdefiniertes Parsing-Format anzugeben, ist ein Typalias für das Zeitfeld erstellt und die Marshaler- und Unmarshaler-Schnittstellen werden als implementiert folgt:
type JsonBirthDate time.Time // UnmarshalJSON translates a JSON string to a time value. 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 } // MarshalJSON converts a time value to a JSON string. func (j JsonBirthDate) MarshalJSON() ([]byte, error) { return json.Marshal(time.Time(j)) }
Diese benutzerdefinierte Logik prüft, ob der JSON-Wert im gewünschten Format vorliegt und analysiert ihn entsprechend.
Aktualisierte Struktur und Analyse
Die Struktur wird aktualisiert, um den benutzerdefinierten Typ zu verwenden, und die Dekodierung kann wie folgt erfolgen üblich:
type Person struct { Name string `json:"name"` BirthDate JsonBirthDate `json:"birth_date"` } decoder := json.NewDecoder(req.Body) if err := decoder.Decode(&person); err != nil { log.Println(err) }
Zusätzliche Funktionen
Der Einfachheit halber kann eine Format-Methode hinzugefügt werden, um eine formatierte Darstellung des Datums bereitzustellen:
// Format prints the date using the specified format string. func (j JsonBirthDate) Format(s string) string { t := time.Time(j) return t.Format(s) }
Dieser benutzerdefinierte Marshalling- und Unmarshaling-Ansatz ermöglicht ein flexibles Parsen von Zeitwerten aus JSON, selbst wenn diese von Standardformaten abweichen.
Das obige ist der detaillierte Inhalt vonWie analysiere ich nicht standardmäßige Zeitformate von JSON in Golang?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!