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
Freigeben: 2024-12-02 00:44:13
Original
920 Leute haben es durchsucht

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
Nach dem Login kopieren

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)
Nach dem Login kopieren
  • Ä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
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage