Heim > Backend-Entwicklung > Golang > Wie dekodiere ich nicht standardmäßige Zeitformate aus JSON?

Wie dekodiere ich nicht standardmäßige Zeitformate aus JSON?

Mary-Kate Olsen
Freigeben: 2024-11-08 20:41:02
Original
1038 Leute haben es durchsucht

How to Decode Non-Standard Time Formats from JSON?

Dekodierung nicht standardmäßiger Zeitformate aus JSON

Beim Umgang mit JSON-Daten, die nicht standardmäßige Zeitformate enthalten, kann es zu einer Standard-JSON-Dekodierung kommen Probleme, da bestimmte Zeitformatmuster erwartet werden. Um dies zu umgehen, können benutzerdefinierte Marshall- und Unmarshal-Funktionen implementiert werden.

Betrachten Sie beispielsweise den folgenden JSON:

{
    "name": "John",
    "birth_date": "1996-10-07"
}
Nach dem Login kopieren

Angenommen, wir möchten dies in eine Personenstruktur dekodieren:

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}
Nach dem Login kopieren

Die Verwendung des Standard-JSON-Decoders:

person := Person{}

decoder := json.NewDecoder(req.Body);

if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}
Nach dem Login kopieren

führt zu einem Fehler, da der Decoder das nicht standardmäßige Zeitformat nicht analysieren kann. Um dies zu beheben, können wir einen benutzerdefinierten Typalias für den Zeitwert erstellen und benutzerdefinierte Marshall- und Unmarshal-Funktionen implementieren.

Eine Beispielimplementierung könnte sein:

// Type alias
type JsonBirthDate time.Time

// Implement UnmarshalJSON
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
}

// Implement MarshalJSON
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

// Example use in struct
type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}
Nach dem Login kopieren

Mit diesen benutzerdefinierten Funktionen kann die JSON-Daten können jetzt erfolgreich in die Ziel-Personenstruktur dekodiert werden, wobei das nicht standardmäßige Zeitformat entsprechend analysiert wird.

Das obige ist der detaillierte Inhalt vonWie dekodiere ich nicht standardmäßige Zeitformate aus JSON?. 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