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

Comment puis-je personnaliser le formatage de l'horodatage dans la sortie JSON de Go ?

DDD
DDDoriginal
2025-01-03 06:41:39939parcourir

How Can I Customize Timestamp Formatting in Go's JSON Output?

Formatage des horodatages dans le JSON sortant avec des types personnalisés

Pour formater les horodatages lors de l'encodage JSON, vous pouvez créer un type personnalisé qui implémente l'interface Marshaler . Ce faisant, vous prenez le contrôle du processus de sérialisation, vous permettant de spécifier le format souhaité.

Implémentation de l'interface Marshaler

L'interface Marshaler nécessite une seule méthode, MarshalJSON, qui renvoie une tranche d'octets représentant les données codées en JSON et une erreur le cas échéant. Dans ce cas, vous définirez un type personnalisé qui enveloppe time.Time et implémente MarshalJSON.

Voici un exemple d'implémentation :

type JSONTime time.Time

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

Mise à jour de la structure du document

Dans votre structure Document, remplacez time.Time par le type JSONTime personnalisé pour le Stamp field:

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

Initialisation du document

Lors de l'initialisation de l'instance du document, utilisez JSONTime(time.Now()) au lieu de time.Now():

testDoc := model.Document{"Meeting Notes", "These are some notes", JSONTime(time.Now()), "Bacon"}

En suivant ces étapes, vous pouvez formater les horodatages dans vos réponses JSON en fonction de vos besoins. Vous pouvez étendre ce concept à d'autres types ou scénarios personnalisés selon vos besoins.

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