En golang, je veux ignorer json lorsque la valeur du champ de type int de la structure est 0.
En d'autres termes, si vous spécifiez «omitempty» dans la balise json d'un champ de type int et que «0» est entré dans la valeur de ce champ, vous voulez l'ignorer.
** * Une addition ** ** Est-il en fait plus approprié de dire «nul» que «ignorer»? **
omitempty
J'ai compris comment ignorer json lorsque le champ de structure est vide
type User struct {
Name string `json:"name, omitempty"`
Age int64 `json:"age, omitempty"`
}
Cependant, dans «omitempty», le type numérique ne peut pas être ignoré même si «0» est entré.
Par conséquent, si vous souhaitez utiliser un champ numérique comme pointeur et l'ignorer, vous pouvez le résoudre en mettant nil dans le pointeur.
//Structure utilisateur
type User struct {
Name string `json:"name, omitempty"`
Age *int64 `json:"age, omitempty"`
}
//Valeur à mapper à la structure
testName := "Alice"
testAge := 20
var age *int64
if age > 0 {
age = &testAge
} else {
age = nil
}
user := User {
Name: testName,
Age: age,
}
Si vous faites ce qui précède, lorsque vous créez json.Marshal (user) '', ~~ Si
testAgevaut
0, le champ `ʻAge
de la structure` ʻUserest ignoré, S'il est supérieur à
0 '', il n'est pas ignoré. ~~
Si testAge
vaut 0
, alors json sera "age": null
.
Lorsqu'il est supérieur à 0 '', il devient
"âge": 20`` et ainsi de suite.
Recommended Posts