Heim >Backend-Entwicklung >Golang >Wie kann ich beim Unmarshalling in Go zwischen leeren und fehlenden JSON-Feldern unterscheiden?

Wie kann ich beim Unmarshalling in Go zwischen leeren und fehlenden JSON-Feldern unterscheiden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-04 06:05:16248Durchsuche

How Can I Distinguish Between Empty and Missing JSON Fields When Unmarshalling in Go?

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!

Stellungnahme:
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