Maison > développement back-end > Golang > Comment puis-je personnaliser la disposition time.Time lors du marshalling vers JSON dans Golang ?

Comment puis-je personnaliser la disposition time.Time lors du marshalling vers JSON dans Golang ?

Patricia Arquette
Libérer: 2024-11-03 03:55:02
original
693 Les gens l'ont consulté

How can I customize the time.Time layout when marshalling to JSON in Golang?

Personnalisation de la disposition Time.Time pour le marshalling JSON

Dans le package encoding/json de Golang, la disposition par défaut pour les valeurs time.Time est "2006 -01-02T15:04:05Z". Cependant, il est possible de remplacer cette mise en page pour utiliser une chaîne de formatage personnalisée.

Solution :

Pour remplacer la mise en page utilisée par json.Marshal pour les champs time.Time , vous pouvez définir un nouveau type qui intègre time.Time et implémente l'interface MarshalText. Cette interface définit une méthode qui renvoie la représentation en octets de la valeur. Le code ci-dessous montre comment y parvenir :

<code class="go">package main

import (
    "encoding/json"
    "fmt"
    "time"
)

type jsonTime struct {
    time.Time
    f string
}

func (j jsonTime) format() string {
    return j.Time.Format(j.f)
}

func (j jsonTime) MarshalText() ([]byte, error) {
    return []byte(j.format()), nil
}

func (j jsonTime) MarshalJSON() ([]byte, error) {
    return []byte(`"` + j.format() + `"`), nil
}

func main() {
    jt := jsonTime{time.Now(), time.Kitchen}
    x := map[string]interface{}{
        "foo": jt,
        "bar": "baz",
    }
    data, err := json.Marshal(x)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%s", data)
}</code>
Copier après la connexion

Dans ce code, la structure jsonTime intègre une valeur time.Time et définit une méthode format() personnalisée pour renvoyer l'heure sous forme de chaîne en utilisant la disposition spécifiée. . Il implémente également les interfaces MarshalText et MarshalJSON pour renvoyer la représentation de chaîne personnalisée lors du marshalling JSON.

En utilisant cette approche, vous pouvez contrôler la disposition utilisée pour les valeurs time.Time dans la sortie JSON et la personnaliser en fonction de vos besoins spécifiques. exigences.

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