Panic: JSON Unmarshal Array into Go Struct
Beim Versuch, Daten aus einer JSON-API zu analysieren, ist der Fehler aufgetreten: „Panic: json: Das Array kann nicht in einen Go-Wert vom Typ „main.Structure“ entmarshaliert werden.“ Das Problem tritt auf, wenn ein JSON-Array in eine Go-Struktur entmarshallt wird.
Ihr Code:
type Structure struct { stuff []interface{} } func main() { // ... decoded := &Structure{} err = json.Unmarshal(body, decoded) }
Erwartetes Ergebnis:
Sie haben erwartet, dass der Code eine Liste von Schnittstellen zurückgibt Objekte.
Tatsächliches Ergebnis:
Stattdessen haben Sie eine Fehlermeldung erhalten, die darauf hinweist, dass das JSON-Array nicht in den Structure Go-Wert entmarshallt werden konnte.
Lösung:
Um dieses Problem zu lösen, ziehen Sie zwei in Betracht Ansätze:
Unmarshal to a Slice:
Ersetzen Sie die Zeile:
decoded := &Structure{}
durch:
var data []interface{}
Dadurch wird das JSON-Array in einen Teil davon entmarshmiert Schnittstellen.
Unmarshalieren in ein Segment von Strukturen:
Erstellen Sie spezifische Strukturen für die Antwortdatenstruktur. Zum Beispiel:
type Tick struct { ID string Name string Symbol string Rank string Price_USD string }
Dann führen Sie das Unmarshalieren zu einem Teil dieser Strukturen durch:
var data []Tick err = json.Unmarshal(body, &data)
Das obige ist der detaillierte Inhalt vonWarum verursacht das Unmarshaling eines Arrays in eine Go-Struktur durch JSON eine Panik?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!