Wie gehe ich mit nicht standardmäßigen Zeitformaten beim JSON-Parsing um?

DDD
Freigeben: 2024-11-09 05:03:02
Original
356 Leute haben es durchsucht

How to Handle Non-Standard Time Formats in JSON Parsing?

Parsing nicht standardmäßiger Zeitformate in JSON

In typischen JSON-Parsing-Szenarien wird erwartet, dass Zeitwerte dem RFC 3339-Format („2006-01-02T15 :04:05Z07:00"). Beim Umgang mit nicht standardmäßigen Zeitformaten stößt der Standard-JSON-Decoder jedoch auf Probleme.

Um dieses Problem zu lösen, können benutzerdefinierte Marshall- und Unmarshal-Methoden für einen benutzerdefinierten Datentyp implementiert werden, der das nicht standardmäßige Zeitformat darstellt. Zum Beispiel:

// Create a type alias for the non-standard time format
type JsonBirthDate time.Time

// Implement UnmarshalJSON to handle conversion from JSON string to time.Time
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 to handle conversion from time.Time to JSON string
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}
Nach dem Login kopieren

Jetzt diesen benutzerdefinierten Typ in die Person-Struktur integrieren:

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

Durch die Verwendung dieser benutzerdefinierten Methoden kann der JSON-Decoder nun die nicht standardmäßige Zeit erfolgreich analysieren Format:

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

Das obige ist der detaillierte Inhalt vonWie gehe ich mit nicht standardmäßigen Zeitformaten beim JSON-Parsing um?. 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