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

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

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-08 20:41:02953Durchsuche

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"
}

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

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

Die Verwendung des Standard-JSON-Decoders:

person := Person{}

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

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

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"`
}

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!

Stellungnahme:
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