Maison > développement back-end > Golang > le corps du texte

Comment gérer les formats d'heure non standard dans l'analyse JSON ?

DDD
Libérer: 2024-11-09 05:03:02
original
356 Les gens l'ont consulté

How to Handle Non-Standard Time Formats in JSON Parsing?

Analyse des formats d'heure non standard en JSON

Dans les scénarios d'analyse JSON typiques, les valeurs de temps doivent adhérer au format RFC 3339 ("2006-01-02T15 :04:05Z07:00"). Cependant, lorsqu'il s'agit de formats d'heure non standard, le décodeur JSON par défaut rencontre des problèmes.

Pour surmonter ce problème, on peut implémenter des méthodes de marshal et de démarshal personnalisées pour un type de données personnalisé qui représente le format d'heure non standard. Par exemple :

// Create a type alias for the non-standard time format
type JsonBirthDate time.Time

// Implement UnmarshalJSON to handle conversion from JSON string to time.Time
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 to handle conversion from time.Time to JSON string
func (j JsonBirthDate) MarshalJSON() ([]byte, error) {
    return json.Marshal(time.Time(j))
}
Copier après la connexion

Maintenant, intégrez ce type personnalisé dans la structure Person :

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

En utilisant ces méthodes personnalisées, le décodeur JSON peut désormais analyser avec succès l'heure non standard format :

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

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal