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>
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!