Maison >développement back-end >Golang >Comment supprimer une date/heure mal formatée dans Go ?

Comment supprimer une date/heure mal formatée dans Go ?

DDD
DDDoriginal
2024-11-07 21:48:03458parcourir

How to Unmarshal Incorrectly Formatted Datetime in Go?

Désagrégation des dates et heures mal formatées

Lorsque vous rencontrez du JSON avec des champs date/heure mal formatés, il devient essentiel de concevoir une stratégie robuste pour les analyser et les désorganiser. dans les structures Go. Le format incorrect implique généralement l'absence du caractère deux-points : : dans le décalage du fuseau horaire, ce qui entraîne des erreurs de démarchage.

Solution : type personnalisé et méthode UnmarshalJSON

Pour Pour résoudre ce problème, un type personnalisé peut être défini pour prendre en charge à la fois les formats corrects et incorrects :

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

Lors du démarshalling, la méthode UnmarshalJSON de ce type est invoquée. Il supprime d'abord les guillemets environnants de la chaîne JSON. Il tente ensuite d’analyser la date/heure en utilisant le format standard time.RFC3339Nano. Si cela échoue, il tente d'analyser en utilisant le format incorrect sans le caractère deux-points ("2006-01-02T15:04:05.999999999Z0700").

Définition de la structure

Pour utiliser ce type personnalisé dans une structure Go :

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

Cela garantit que JSON avec des formats datetime corrects et incorrects peut être désorganisé dans la même structure Go.

Conclusion

En définissant un type de champ d'heure personnalisé avec une méthode UnmarshalJSON appropriée, il est possible d'analyser et de désassembler de manière transparente les champs datetime mal formatés dans les programmes Go. Cela permet une plus grande flexibilité dans la gestion des données d'entrée et garantit que la représentation de la structure Go reflète avec précision les données, quel que soit leur format.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn