Annuler la date et l'heure mal formatées
Lors de la désorganisation des dates et heures JSON dans Go, un problème courant survient lorsque le décalage de fuseau horaire fourni dans le JSON est mal formaté . Le format attendu, selon la RFC3339, est 02:00 avec deux points, mais certaines sources peuvent l'afficher sous la forme 0200 sans les deux points.
Solution de démarshaling personnalisée
Pour Pour gérer cet écart, un type de champ d'heure personnalisé peut être défini qui prend en charge les deux formats :
type MyTime struct {
time.Time
}
func (self *MyTime) UnmarshalJSON(b []byte) (err error) {
s := string(b)
s = s[1:len(s)-1] // Remove the quotes
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
}
Cette solution exploite la méthode UnmarshalJSON pour supprimer d'abord les guillemets de la chaîne JSON. Ensuite, il essaie d'analyser la date et l'heure en utilisant le format standard RFC3339Nano. Si cela échoue, il revient à analyser un format modifié qui supprime les deux points du décalage horaire.
Intégration de structure
Pour intégrer ce type dans une structure, définissez comme :
type Test struct {
Time MyTime `json:"time"`
}
Cela permet à JSON d'être désorganisé dans une structure de test, le champ Heure étant rempli avec la date et l'heure correctes, que le décalage horaire soit séparé par deux points ou non.
Remarque sur le format de l'heure
L'utilisation de l'année 2006 dans les chaînes de format de l'heure est un artefact historique de la version initiale de Go. Cela n'a aucune signification pratique et n'affecte pas l'exactitude ou le formatage des dates et heures.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3