Heim > Backend-Entwicklung > Golang > Wie entmarshaliere ich falsch formatierte Datums- und Uhrzeitangaben in Go?

Wie entmarshaliere ich falsch formatierte Datums- und Uhrzeitangaben in Go?

DDD
Freigeben: 2024-11-07 21:48:03
Original
468 Leute haben es durchsucht

How to Unmarshal Incorrectly Formatted Datetime in Go?

Unmarshalling falsch formatierter Datetime-Felder

Wenn Sie auf JSON mit falsch formatierten Datetime-Feldern stoßen, ist es wichtig, eine robuste Strategie zum Parsen und Unmarshalling dieser Felder zu entwickeln in Go-Strukturen. Das falsche Format beinhaltet typischerweise das Fehlen des Doppelpunkts „:“ im Zeitzonen-Offset, was zu Unmarshalling-Fehlern führt.

Lösung: Benutzerdefinierter Typ und UnmarshalJSON-Methode

An Um dieses Problem zu beheben, kann ein benutzerdefinierter Typ definiert werden, der sowohl das richtige als auch das falsche Format unterstützt:

<code class="go">type MyTime struct {
    time.Time
}

func (self *MyTime) UnmarshalJSON(b []byte) (err error) {
    s := string(b)
    s = s[1:len(s)-1]

    t, err := time.Parse(time.RFC3339Nano, s)
    if err != nil {
        t, err = time.Parse("2006-01-02T15:04:05.999999999Z0700", s)
    }
    self.Time = t
    return
}</code>
Nach dem Login kopieren

Beim Unmarshalling Die UnmarshalJSON-Methode dieses Typs wird aufgerufen. Zunächst werden die umgebenden Anführungszeichen aus der JSON-Zeichenfolge entfernt. Anschließend wird versucht, die Datums- und Uhrzeitangabe im Standardformat time.RFC3339Nano zu analysieren. Wenn dies fehlschlägt, wird mit dem Parsen mit dem falschen Format ohne Doppelpunkt begonnen („2006-01-02T15:04:05.999999999Z0700“).

Strukturdefinition

Um diesen benutzerdefinierten Typ innerhalb eines Go zu verwenden Struktur:

<code class="go">type Test struct {
    Time MyTime `json:"time"`
}</code>
Nach dem Login kopieren

Dadurch wird sichergestellt, dass JSON mit korrekten und falschen Datums-/Uhrzeitformaten in derselben Go-Struktur entmarshallt werden kann.

Fazit

Durch die Definition eines benutzerdefinierten Zeitfeldtyps mit einer geeigneten UnmarshalJSON-Methode ist es möglich, falsch formatierte Datums-/Uhrzeitfelder zu analysieren und zu entmarshalieren nahtlos in Go-Programme integrieren. Dies ermöglicht eine größere Flexibilität bei der Handhabung von Eingabedaten und stellt sicher, dass die Go-Strukturdarstellung die Daten unabhängig von ihrem Format genau wiedergibt.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich falsch formatierte Datums- und Uhrzeitangaben in Go?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage