[Golang] Ich möchte dem json-Tag des int-Typ-Felds der Struktur omitempty hinzufügen, damit es ignoriert wird, wenn 0 eingegeben wird.

Einführung

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.

Lösung

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.

Referenz

Recommended Posts

[Golang] Ich möchte dem json-Tag des int-Typ-Felds der Struktur omitempty hinzufügen, damit es ignoriert wird, wenn 0 eingegeben wird.
Ich möchte ausgeben, während der Wert des Typs (z. B. datetime) konvertiert wird, der bei der Ausgabe von json mit Python nicht unterstützt wird
Ich habe ein Skript erstellt, um zu überprüfen, ob an der angegebenen Position der JSON-Datei in Python Englisch eingegeben wird.
Ich möchte initialisieren, wenn der Wert leer ist (Python)
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Ich habe versucht, es zu erweitern, damit die Datenbank mit der Analysesoftware von Wiire verwendet werden kann
Ich möchte die Einstellungsdatei erhalten und prüfen, ob die von jinja2 generierte JSON-Datei eine gültige JSON ist
Ich möchte es nicht zugeben ... Die dynamische Systemdarstellung von Neural Network
Ich habe das Verhalten von Argsort of Numpy nicht verstanden, deshalb werde ich es zusammenfassen
Ich möchte CSV Zeile für Zeile lesen, während ich den Feldtyp konvertiere (während der Fortschrittsbalken angezeigt wird) und ihn verarbeiten.