JSON omitempty with time.Time Field
Dans Go, l'annotation json,omitempty" permet d'exclure les champs avec des valeurs vides du JSON sérialisation. Cependant, cela ne fonctionne pas avec les champs time.Time car ils ont une valeur nulle qui est considérée comme une date valide.
Pour Pour résoudre ce problème, définissez le champ time.Time sur time.Time{} au lieu de le laisser avec une valeur nulle. Cela demandera à l'encodeur JSON de traiter le champ comme vide.
Considérez l'exemple suivant :
package main import ( "encoding/json" "fmt" "time" ) type MyStruct struct { Timestamp time.Time `json:",omitempty"` Date time.Time `json:",omitempty"` Field string `json:",omitempty"` } func main() { ms := MyStruct{ Timestamp: time.Date(2015, 9, 18, 0, 0, 0, 0, time.UTC), Date: time.Time{}, Field: "", } bb, err := json.Marshal(ms) if err != nil { panic(err) } fmt.Println(string(bb)) }
Sortie :
{"Timestamp":"2015-09-18T00:00:00Z"}
Vous pouvez également utiliser un pointeur sur time.Time et le régler sur zéro pour atteindre l'objectif même effet :
type MyStruct struct { Timestamp *time.Time `json:",omitempty"` Date *time.Time `json:",omitempty"` Field string `json:",omitempty"` }
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!