Heim > Backend-Entwicklung > Golang > Wie kann ich beim Unmarshaling von JSON in Go zwischen leeren und nicht spezifizierten Feldern unterscheiden?

Wie kann ich beim Unmarshaling von JSON in Go zwischen leeren und nicht spezifizierten Feldern unterscheiden?

Patricia Arquette
Freigeben: 2024-12-09 02:35:10
Original
527 Leute haben es durchsucht

How Can I Differentiate Between Void and Unspecified Fields When Unmarshaling JSON in Go?

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": ""}
]
Nach dem Login kopieren

Wenn wir eine Go-Struktur wie folgt definieren:

type Category struct {
  Name        string
  Description string
}
Nach dem Login kopieren

und den JSON in einen Abschnitt von Kategorieinstanzen entmarshalieren, erhalten wir die folgende Ausgabe:

[{Name:A Description:Monotremata} {Name:B Description:} {Name:C Description:}]
Nach dem Login kopieren

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
}
Nach dem Login kopieren

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}]
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage