Heim >Backend-Entwicklung >Golang >Warum tritt „json: Array kann nicht in Go-Wert vom Typ main.Structure entmarshaliert werden' auf und wie kann ich das Problem beheben?

Warum tritt „json: Array kann nicht in Go-Wert vom Typ main.Structure entmarshaliert werden' auf und wie kann ich das Problem beheben?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-02 00:44:13986Durchsuche

Why Does

Unmarshaling von Arrays und Strukturtypen

Beim Versuch, JSON-Daten in eine Struktur zu analysieren, ist es wichtig, die Kompatibilität zwischen der Datenstruktur und der Struktur sicherzustellen Zieltyp. Die folgende Fehlermeldung:

panic: json: cannot unmarshal array into Go value of type main.Structure

zeigt an, dass die Anwendung versucht, ein Array von JSON in eine Struktur zu entmarshalieren, die einen anderen Typ erwartet.

Um dieses Problem zu beheben, ziehen Sie die folgenden Lösungen in Betracht :

  • Unmarshal to a Slice:

Wenn es sich bei den JSON-Daten um ein Array von Objekten handelt, entpacken Sie sie je nach Struktur Ihrer JSON-Daten in einen Slice der Schnittstelle{} oder einen Slice spezifischer Strukturen:

var data []interface{}
err = json.Unmarshal(body, &data)

// Unmarshal to specific structs:
type Tick struct {
     ID string
     Name string
     ...
}

var data []Tick
err = json.Unmarshal(body, &data)
  • Ändern Sie die Struktur:

Wenn Sie die vorhandene Struktur beibehalten müssen, sollten Sie den Feldtyp ändern, um ein Array zu akzeptieren:

type Structure struct {
     stuff [][]interface{} // Change to a slice of slices
}

Das obige ist der detaillierte Inhalt vonWarum tritt „json: Array kann nicht in Go-Wert vom Typ main.Structure entmarshaliert werden' auf und wie kann ich das Problem beheben?. 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