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!