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
Mary-Kate OlsenOriginal
2024-12-04 09:40:15177Durchsuche

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)

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:}]

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
}

Mit dieser Änderung wird die Ausgabe wie folgt:

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

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!

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