Kontext:
JSON-Marshalling in Go ermöglicht die Konvertierung von Strukturen in JSON-Objekte. Standardmäßig sind alle exportierten Strukturfelder in der JSON-Ausgabe enthalten. Leere Felder können jedoch weggelassen werden, indem „omitempty“ als Feld-Tag angegeben wird.
Problem:
Wenn eine verschachtelte Struktur leer ist (d. h. Null hat). Werte für alle seine Felder), erscheint es möglicherweise immer noch in der JSON-Ausgabe, obwohl es Folgendes enthält: „,omitempty“ Tag.
Lösung:
Um leere verschachtelte Strukturen wegzulassen, ist es notwendig, Zeiger auf die Strukturen zu verwenden. Dadurch wird der leere Wert der verschachtelten Struktur als Nullzeiger betrachtet.
Erklärung:
Aus der Go-Dokumentation:
Daher stellen wir durch die Verwendung eines Zeigers auf die verschachtelte Struktur sicher, dass diese berücksichtigt wird ein leerer Wert und wird daher in der JSON-Ausgabe weggelassen, wenn das Tag „:“,omitempty“ vorhanden ist verwendet.
Beispiel:
type ColorGroup struct { ID int `json:",omitempty"` Name string Colors []string } type Total struct { A *ColorGroup `json:",omitempty"` B string `json:",omitempty"` } // Empty nested struct (zero values) group := Total{ B: "abc", } // Marshal group without nested struct (only "B" field included) b, err := json.Marshal(group) if err != nil { fmt.Println("error:", err) } os.Stderr.Write(b)
Das obige ist der detaillierte Inhalt vonWie kann man leere verschachtelte Strukturen im JSON-Marshalling von Go weglassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!