Unterscheiden ungültiger Werte von nicht spezifizierten Feldern in Go Unmarshaling
Das Unmarshaling von JSON-Daten in Golang kann unkompliziert sein, aber die Unterscheidung zwischen ungültigen Werten und nicht spezifizierten Feldern Werte können eine Herausforderung sein. Dieser Artikel befasst sich mit diesem Problem und bietet eine Lösung zur Unterscheidung zwischen den beiden.
Im bereitgestellten Beispiel haben wir einen Teil der Kategoriestrukturen, wobei jede Kategorie über ein Feld „Name“ und „Beschreibung“ verfügt. Beim Unmarshaling von JSON-Daten in diesem Slice stoßen wir auf ein Szenario, in dem sowohl Kategorie B als auch Kategorie C leere Beschreibungsfelder haben. Wir möchten jedoch wissen, ob es eine Möglichkeit gibt, zu erkennen, ob die Beschreibung der Kategorie B als leere Zeichenfolge angegeben ist oder einfach nicht in den JSON-Daten vorhanden ist.
Der Schlüssel besteht darin, das Beschreibungsfeld als Zeiger auf a zu deklarieren string:
type Category struct { Name string Description *string }
Wenn ein JSON-Feld mit einem leeren Stringwert vorhanden ist, wird es durch die Verwendung eines Zeigers auf einen Zeiger gesetzt, der auf einen leeren String (*"") zeigt. Wenn das Feld hingegen nicht in JSON vorhanden ist, bleibt der Zeiger auf Null (
Die aktualisierte Ausgabe veranschaulicht diese Unterscheidung:
[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
Hier Kategorie A Die Beschreibung ist nicht leer, die Beschreibung der Kategorie B ist Null (was auf ein nicht spezifiziertes Feld hinweist) und die Beschreibung der Kategorie C ist eine leere Zeichenfolge (zeigt einen angegebenen leeren Wert an).
Mit dieser Technik können Sie zwischen ungültigen Werten (Null) und nicht spezifizierten Feldern (Nullzeiger) unterscheiden und so das Verhalten Ihres Programms entsprechend anpassen.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshalling von JSON in Go zwischen leeren und fehlenden Feldern unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!