Heim > Backend-Entwicklung > Golang > Wie kann man leere verschachtelte Strukturen im JSON-Marshalling von Go weglassen?

Wie kann man leere verschachtelte Strukturen im JSON-Marshalling von Go weglassen?

Susan Sarandon
Freigeben: 2024-12-13 22:21:16
Original
273 Leute haben es durchsucht

How to Omit Empty Nested Structs in Go's JSON Marshaling?

Leere verschachtelte Stucts beim JSON-Marshalling weglassen

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:

  • Strukturwerte werden als JSON-Objekte kodiert. Leere Werte umfassen Nullzeiger.
  • Das omitempty-Tag gilt für leere Werte, einschließlich Nullzeiger.

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)
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage