Heim >Backend-Entwicklung >Golang >Wie kann ich beim Unmarshaling von JSON in Go zwischen leeren und nicht spezifizierten Feldern unterscheiden?
Erkennen von ungültigen und nicht spezifizierten Feldern beim JSON-Unmarshaling in Go
In JSON kann es schwierig sein, zwischen ungültigen Werten und nicht spezifizierten Feldern zu unterscheiden Entmarshaling von Daten in Go-Strukturen.
Bedenken Sie beispielsweise Folgendes JSON:
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
Wenn wir eine Go-Struktur wie folgt definieren:
type Category struct { Name string Description string }
und den JSON in einen Abschnitt von Kategorieinstanzen entmarshalieren, erhalten wir die folgende Ausgabe:
[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
Beachten Sie, dass das Beschreibungsfeld von B eine leere Zeichenfolge ist, während das Beschreibungsfeld von C im JSON vollständig weggelassen wird. In beiden Fällen wird das Beschreibungsfeld in der Go-Darstellung auf eine leere Zeichenfolge gesetzt.
Um zwischen diesen Fällen zu unterscheiden, besteht ein Ansatz darin, Zeiger für optionale Felder zu verwenden. Indem wir den Beschreibungstyp in einen Zeiger ändern, können wir zwischen einem leeren Zeichenfolgenwert und einem Nullwert (was auf ein nicht spezifiziertes Feld hinweist) unterscheiden:
type Category struct { Name string Description *string }
Wenn wir den JSON in diese geänderte Struktur entmarshalieren, erhalten wir die folgende Ausgabe:
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
Wie Sie sehen können, ist das Beschreibungsfeld von B jetzt Null, während das Beschreibungsfeld von C ein Zeiger auf leer ist Zeichenfolge (angegeben durch die hexadezimale Speicheradresse). Dadurch können wir nicht spezifizierte Felder identifizieren und sie in unserem Programm entsprechend behandeln.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshaling von JSON in Go zwischen leeren und nicht spezifizierten Feldern unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!