Heim > Backend-Entwicklung > Golang > Wie analysiere ich nicht standardmäßige Zeitformate von JSON in Golang?

Wie analysiere ich nicht standardmäßige Zeitformate von JSON in Golang?

Patricia Arquette
Freigeben: 2024-11-09 03:23:01
Original
929 Leute haben es durchsucht

How to Parse Non-Standard Time Formats from 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))
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage