Panik: JSON Unmarshal Array into Go Struct
Apabila cuba menghuraikan data daripada JSON API, anda mengalami ralat: "panic: json: tidak boleh menyahmarshal tatasusunan ke dalam nilai Go jenis utama.Struktur." Isu timbul apabila menyahmarshaling tatasusunan JSON ke dalam struct Go.
Kod Anda:
type Structure struct { stuff []interface{} } func main() { // ... decoded := &Structure{} err = json.Unmarshal(body, decoded) }
Hasil Jangkaan:
Anda menjangkakan kod itu akan mengembalikan senarai antara muka objek.
Hasil Sebenar:
Sebaliknya, anda menerima ralat yang menunjukkan bahawa tatasusunan JSON tidak boleh dinyahmarshalkan ke dalam nilai Structure Go.
Penyelesaian:
Untuk menyelesaikan isu ini, pertimbangkan dua pendekatan:
Unmarshal to a Slice:
Ganti baris:
decoded := &Structure{}
dengan:
var data []interface{}
Ini akan menyahmarshal tatasusunan JSON kepada sekeping antara muka.
Unmarshal to Slice of Structs:
Buat struct khusus untuk struktur data tindak balas. Contohnya:
type Tick struct { ID string Name string Symbol string Rank string Price_USD string }
Kemudian, hapuskan sepotong struct ini:
var data []Tick err = json.Unmarshal(body, &data)
Atas ialah kandungan terperinci Mengapa JSON Membongkar Array menjadi Go Struct Menyebabkan Panik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!