In Golang möchte ich json ignorieren, wenn der Wert des int-Typ-Felds der Struktur 0 ist.
Mit anderen Worten, wenn Sie im json-Tag eines Feldes vom Typ int "omitempty" angeben und im Wert dieses Felds "0" eingeben, möchten Sie es ignorieren.
** * Ergänzung ** ** Ist es eigentlich angemessener, "null" als "ignorieren" zu sagen? **
omitempty
Ich habe herausgefunden, wie man json ignoriert, wenn das Strukturfeld leer ist
type User struct {
Name string `json:"name, omitempty"`
Age int64 `json:"age, omitempty"`
}
In omitempty
kann der numerische Typ jedoch nicht ignoriert werden, selbst wenn 0
eingegeben wird.
Wenn Sie ein numerisches Feld als Zeiger verwenden und ignorieren möchten, können Sie es lösen, indem Sie nil in den Zeiger setzen.
//Benutzerstruktur
type User struct {
Name string `json:"name, omitempty"`
Age *int64 `json:"age, omitempty"`
}
//Wert, der der Struktur zugeordnet werden soll
testName := "Alice"
testAge := 20
var age *int64
if age > 0 {
age = &testAge
} else {
age = nil
}
user := User {
Name: testName,
Age: age,
}
Wenn Sie das oben genannte tun, wenn Sie json.Marshal (user)
machen,
~~ Wenn testAge
0
ist, wird das Feld Age
der User
Struktur ignoriert,
Wenn es größer als "0" ist, wird es nicht ignoriert. ~~
Wenn testAge
0
ist, dann ist json "age": null
.
Wenn es größer als "0" ist, wird es "Alter": 20 "und so weiter.
Recommended Posts