Heim >Backend-Entwicklung >Golang >Wie kann man in Go zwischen JSON-Null- und fehlenden Feldern unterscheiden?

Wie kann man in Go zwischen JSON-Null- und fehlenden Feldern unterscheiden?

DDD
DDDOriginal
2024-11-30 15:34:16989Durchsuche

How to Distinguish Between JSON Null and Missing Fields in Go?

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!

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