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!