erkennen void und nicht spezifizierte Felder während JSON Unmarshaling in Go
In JSON können es schwierig sein, zwischen void -Werten zu unterscheiden und nicht spezifizierte Fields zu unterscheiden. JSON:
[ {"Name": "a", "Beschreibung": "monotremata"}, {"Name": "B"}, {"Name": "C", "Beschreibung": ""} ]
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
Geben Sie die Kategoriestruktur {ein Name Zeichenfolge Beschreibung Zeichenfolge }
type Category struct { Name string Description string }
[{name: a Beschreibung: monotremata} {Name: B Beschreibung:} {name: c Beschreibung:}]
[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
. In beiden Fällen wird das Feld Beschreibung auf eine leere Zeichenfolge in der GO -Darstellung eingestellt.
Um zwischen diesen Fällen zu unterscheiden, besteht ein Ansatz darin, Zeiger für optionale Felder zu verwenden. Durch Ändern der Art der Beschreibung in einen Zeiger können wir zwischen einem leeren Zeichenfolgenwert und einem Nullwert unterscheiden (was auf ein nicht spezifiziertes Feld angibt):
type Category struct { Name string Description *string }
Wenn wir den JSON in diese geänderte Struktur eintauchen, erhalten wir die folgende Ausgabe:
[{Name:A Description:0x1050c150} {Name:B Description:. Beschreibung Feld von C ist ein Zeiger auf eine leere Zeichenfolge (angezeigt durch die Hexadezimalspeicheradresse). Auf diese Weise können wir nicht spezifizierte Felder identifizieren und diese in unserem Programm entsprechend verarbeiten.} {Name:C Description:0x1050c158}]
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3