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

Comment décoder les formats d'heure non standard à partir de JSON ?

Mary-Kate Olsen
Libérer: 2024-11-08 20:41:02
original
1025 Les gens l'ont consulté

How to Decode Non-Standard Time Formats from JSON?

Décodage des formats d'heure non standard à partir de JSON

Lorsque vous traitez des données JSON contenant des formats d'heure non standard, le décodage JSON standard peut rencontrer problèmes car il s’attend à des modèles de format d’heure spécifiques. Pour surmonter ce problème, des fonctions de marshal et de démarshal personnalisées peuvent être implémentées.

Par exemple, considérons le JSON suivant :

{
    "name": "John",
    "birth_date": "1996-10-07"
}
Copier après la connexion

Supposons que nous voulions décoder cela dans une structure Person :

type Person struct {
    Name string `json:"name"`
    BirthDate time.Time `json:"birth_date"`
}
Copier après la connexion

Utilisation du décodeur JSON standard :

person := Person{}

decoder := json.NewDecoder(req.Body);

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

conduit à un erreur, car le décodeur ne peut pas analyser le format d'heure non standard. Pour résoudre ce problème, nous pouvons créer un alias de type personnalisé pour la valeur temporelle et implémenter des fonctions de marshal et de démarshal personnalisées.

Un exemple d'implémentation pourrait être :

// Type alias
type JsonBirthDate time.Time

// Implement UnmarshalJSON
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
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}

// Example use in struct
type Person struct {
    Name string `json:"name"`
    BirthDate JsonBirthDate `json:"birth_date"`
}
Copier après la connexion

Avec ces fonctions personnalisées, le Les données JSON peuvent désormais être décodées avec succès dans la structure Person cible, avec le format d'heure non standard analysé de manière appropriée.

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