Maison > développement back-end > Golang > Comment analyser les formats d'heure non standard à partir de JSON dans Golang ?

Comment analyser les formats d'heure non standard à partir de JSON dans Golang ?

Patricia Arquette
Libérer: 2024-11-09 03:23:01
original
930 Les gens l'ont consulté

How to Parse Non-Standard Time Formats from JSON in Golang?

Analyse du format d'heure non standard à partir de JSON

Lors du décodage des données JSON dans une structure personnalisée, des incohérences dans les formats de date peuvent survenir. Pour résoudre ce problème, Golang offre la possibilité d'implémenter des fonctions de marshal et de démarshal personnalisées.

Fonctions de marshaler et de démarshaler personnalisées

Pour spécifier un format d'analyse personnalisé, un alias de type est créé pour le champ horaire, et les interfaces Marshaler et Unmarshaler sont implémentées comme suit :

type JsonBirthDate time.Time

// UnmarshalJSON translates a JSON string to a time value.
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
}

// MarshalJSON converts a time value to a JSON string.
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}
Copier après la connexion

Cette logique personnalisée vérifie si la valeur JSON est au format souhaité et l'analyse en conséquence.

Structure et analyse mises à jour

La structure est mise à jour pour utiliser le type personnalisé, et le décodage peut se dérouler comme d'habitude :

type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}

decoder := json.NewDecoder(req.Body)
if err := decoder.Decode(&person); err != nil {
    log.Println(err)
}
Copier après la connexion

Fonctionnalités supplémentaires

Pour plus de commodité, une méthode Format peut être ajoutée pour fournir une représentation formatée de la date :

// Format prints the date using the specified format string.
func (j JsonBirthDate) Format(s string) string {
    t := time.Time(j)
    return t.Format(s)
}
Copier après la connexion

Cette approche de marshaling et de démarshaling personnalisée permet une analyse flexible des valeurs de temps à partir de JSON même lorsque ils s'écartent des formats standards.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal