Heim >Backend-Entwicklung >Golang >Wie entmarshaliere ich unerwartete JSON-Strukturen in Go?

Wie entmarshaliere ich unerwartete JSON-Strukturen in Go?

Susan Sarandon
Susan SarandonOriginal
2024-11-25 12:11:15878Durchsuche

How to Unmarshal Unexpected JSON Structures in Go?

Unmarshaling von JSON-Daten unbekannten Formats

Wenn man mit JSON-Daten konfrontiert wird, die eine unvorhersehbare Struktur und variable Schlüssel besitzen, stellt das Unmarshaling eine Herausforderung dar es in Go-Strukturen. In diesem Artikel geht es darum, wie man mit solchen Szenarien effizient umgeht.

Lösung

Um dieses Problem anzugehen, gibt es zwei empfohlene Ansätze:

Ansatz 1: Verwenden einer Map

Wenn die Schlüssel unbekannt sind, ist die Verwendung einer Map[string]interface{}-Variable eine geeignete Option zum Unmarshaling der JSON-Nutzlast.

var grades map[string]interface{}

err := json.Unmarshal([]byte(jsonString), &grades)

Hier enthält die Kartenvariable „Grades“ die nichtmarshalierten Daten, wobei Schlüssel die unbekannten Fachnamen darstellen und Werte Karten sind, die aus Studentennamen und ihren Noten bestehen.

Ansatz 2: Unbekannte Schlüssel mit JSON-Tag ignorieren

Wenn a struct bevorzugt wird, kann es mit dem Tag json:"-" annotiert werden, um bestimmte Felder beim JSON-Marshalling und Unmarshalling zu ignorieren. Dadurch kann die Struktur die nicht gemarshalten Daten enthalten und gleichzeitig die unbekannten Schlüssel ausschließen.

type GradeData struct {
    Grades map[string]interface{} `json:"-"`
}

var gradesData GradeData
err := json.Unmarshal([]byte(jsonString), &gradesData.Grades)

In diesem Fall enthält die Struktur „GradeData“ nur das Feld „Noten“, bei dem es sich um eine Zuordnung der Fachnamen und Schüler handelt Noten, aber die ursprünglichen Schlüsselnamen aus dem JSON sind nicht vorhanden. Das JSON-Tag stellt sicher, dass die Felder der Struktur mit dem gewünschten Ausgabeformat übereinstimmen.

Das obige ist der detaillierte Inhalt vonWie entmarshaliere ich unerwartete JSON-Strukturen in Go?. 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