Maison >développement back-end >Golang >Comment puis-je personnaliser la sortie d'horodatage JSON dans Go ?

Comment puis-je personnaliser la sortie d'horodatage JSON dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 01:39:15291parcourir

How Can I Customize JSON Timestamp Output in Go?

Personnalisation de la sortie JSON pour les horodatages

La sérialisation des structures Go avec des formats de date personnalisés peut être réalisée en adaptant le processus d'encodage à des types de données spécifiques. Dans le cas des horodatages, la représentation JSON par défaut du type time.Time ne répond souvent pas aux exigences de formatage souhaitées.

Pour résoudre ce problème, vous pouvez envelopper time.Time dans un type de données personnalisé qui implémente json.Marshaler interface. Cette interface définit une méthode MarshalJSON, qui vous permet de définir comment le type doit être représenté en JSON.

Par exemple :

type JSONTime time.Time

func (t JSONTime) MarshalJSON() ([]byte, error) {
    // Convert the timestamp to the desired format
    stamp := fmt.Sprintf("\"%s\"", time.Time(t).Format("Mon Jan _2"))
    return []byte(stamp), nil
}

Dans la structure de votre Document, mettez à jour le champ Stamp pour utiliser JSONTime au lieu de time.Time :

type Document struct {
    Name        string
    Content     string
    Stamp       JSONTime
    Author      string
}

Lorsque vous encodez un document à l'aide de json.Marshal ou json.NewEncoder, le champ Stamp sera sérialisé dans votre format personnalisé. Par exemple, au lieu de "2014-05-16T08:28:06.801064-04:00", vous pourriez obtenir "15 mai 2014".

Cette approche offre une plus grande flexibilité dans le contrôle de la manière dont les horodatages sont représentés dans JSON. , vous permettant de les adapter à des besoins spécifiques d'affichage ou d'échange de données.

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!

Déclaration:
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