Die Geheimnisse leerer Werte und nicht spezifizierter Felder beim Unmarshalling in Go enthüllen
In Go kann das Unmarshalling von JSON in Strukturen eine Herausforderung sein zwischen ungültigen Werten und nicht spezifizierten Feldwerten unterscheiden. Dies kann zu mehrdeutigem Programmverhalten führen. So lösen Sie dieses Rätsel:
Void- und nicht spezifizierte Werte unterscheiden
Void-Werte treten auf, wenn ein JSON-Feld vorhanden ist, aber einen leeren Wert hat (z. B. eine leere Zeichenfolge). ), während nicht spezifizierte Werte auftreten, wenn ein Feld im JSON vollständig weggelassen wird. Um zwischen diesen zu unterscheiden, ändern Sie den Feldtyp, um einen Zeiger zu verwenden:
type Category struct { Name string Description *string }
Wenn das JSON-Feld nun eine leere Zeichenfolge enthält, wird es auf einen Zeiger gesetzt, der auf eine leere Zeichenfolge zeigt. Wenn das Feld jedoch nicht vorhanden ist, bleibt es Null.
Beispielverwendung
Berücksichtigen Sie den folgenden JSON:
[ {"Name": "A", "Description": "Monotremata"}, {"Name": "B"}, {"Name": "C", "Description": ""} ]
Mit dem Wenn Sie den Feldtyp geändert haben, lautet die Ausgabe:
[{Name:A Description:0x1050c150}, {Name:B Description:<nil>}, {Name:C Description:0x1050c158}]
Dadurch können Sie zwischen dem nicht spezifizierten Beschreibungsfeld in unterscheiden Kategorie B und das leere Beschreibungsfeld in Kategorie C. Sie können diese nun separat in Ihrem Programm behandeln.
Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshalling in Go zwischen leeren und fehlenden JSON-Feldern unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!