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

Wie kann ich beim Unmarshaling von JSON in Go zwischen leeren und fehlenden Werten unterscheiden?

Mary-Kate Olsen
Freigeben: 2024-12-04 09:40:15
Original
243 Leute haben es durchsucht

How Can I Differentiate Between Empty and Missing Values When Unmarshaling JSON in Go?

Erkennen leerer und nicht spezifizierter Werte beim Go-Unmarshaling

Beim Unmarshaling von JSON-Daten in Go-Strukturen kann es schwierig sein, zwischen leeren und fehlenden Werten zu unterscheiden Werte. Dies ist besonders wichtig, wenn Sie diese Werte in Ihrem Programm unterschiedlich behandeln möchten.

Betrachten Sie das folgende Beispiel:

import (
    "encoding/json"
    "fmt"
)

type Category struct {
    Name        string
    Description string
}

var categories []Category

jsonBlob := []byte(`[
    {"Name": "A", "Description": "Monotremata"},
    {"Name": "B"},
    {"Name": "C", "Description": ""}
]`)

err := json.Unmarshal(jsonBlob, &categories)
if err != nil {
    fmt.Println("error:", err)
}
fmt.Printf("%+v", categories)
Nach dem Login kopieren

In diesem Beispiel ist das Beschreibungsfeld der Kategorie B leer, während Das Beschreibungsfeld der Kategorie C ist im JSON nicht angegeben. Die Ausgabe lautet:

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

Wie Sie sehen, ist es nicht möglich, zwischen diesen beiden Fällen zu unterscheiden.

Lösung

Sie können Unterscheiden Sie zwischen leeren und fehlenden Werten, indem Sie den Feldtyp in einen Zeiger ändern. Wenn der Wert in JSON mit einem leeren Stringwert vorhanden ist, wird er auf einen Zeiger gesetzt, der auf einen leeren String zeigt. Wenn es in JSON nicht vorhanden ist, bleibt es Null.

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

Mit dieser Änderung wird die Ausgabe wie folgt:

[{Name:A Description:0x1050c150} {Name:B Description:<nil>} {Name:C Description:0x1050c158}]
Nach dem Login kopieren

Jetzt können Sie den Nullwert zur Identifizierung verwenden fehlende Felder und behandeln Sie sie entsprechend.

Das obige ist der detaillierte Inhalt vonWie kann ich beim Unmarshaling von JSON in Go zwischen leeren und fehlenden Werten unterscheiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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