Heim >Backend-Entwicklung >Golang >Wie kann man in Go zwischen JSON-Null- und fehlenden Feldern unterscheiden?
JSON Null vs. fehlende Felder in Go: Ein Vergleich
Bei der Arbeit mit JSON-Daten in Go ist es wichtig, zwischen Feldern zu unterscheiden werden explizit auf null gesetzt und Felder, die in der JSON-Eingabe einfach fehlen. Diese Unterscheidung wird notwendig, wenn die JSON-Daten eine Golang-Struktur darstellen.
Sowohl Null- als auch fehlende Felder führen zu Nullwerten in den entsprechenden Go-Strukturfeldern. Die Unterscheidung zwischen den beiden Szenarien kann jedoch entscheidend sein, um festzustellen, ob ein Feld absichtlich auf Null gesetzt wurde oder nicht in den JSON-Daten enthalten war.
Um dieser Herausforderung zu begegnen, stehen zwei Ansätze zur Verfügung:
Verwendung optionaler Strukturen mit Generika (Go 1.18)
Go 1.18 stellt vor Generics, die die Erstellung einer generischen optionalen Struktur zur Bewältigung dieser Situation ermöglichen. Die optionale Struktur verfügt über ein definiertes boolesches Feld, das das Vorhandensein eines Werts in der JSON-Eingabe angibt, und einen Wertzeiger auf den tatsächlichen Wert.
type Optional[T any] struct { Defined bool Value *T }
type Payload struct { Field1 Optional[string] `json:"field1"` Field2 Optional[bool] `json:"field2"` Field3 Optional[int32] `json:"field3"` }
Verwenden benutzerdefinierter optionaler Strukturen (Pre-Generics). )
Vor Generika kann für jeden Datentyp, als der behandelt werden muss, eine benutzerdefinierte Optional*-Struktur erstellt werden optional.
type OptionalString struct { Defined bool Value *string }
type Payload struct { SomeField1 string `json:"somefield1"` SomeField2 OptionalString `json:"somefield2"` }
Durch die Verwendung dieser Techniken können Entwickler leicht erkennen, ob ein JSON-Feld explizit auf Null gesetzt wurde oder in den Eingabedaten fehlte, was eine größere Flexibilität und Kontrolle über die Datenvalidierung und -verarbeitung bietet .
Das obige ist der detaillierte Inhalt vonWie kann man in Go zwischen JSON-Null- und fehlenden Feldern unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!