Memahami Isu:
Semasa cuba menghuraikan data daripada API JSON, ralat yang tidak dijangka timbul: "panic: json: cannot tatasusunan unmarshal ke dalam nilai Go jenis utama.Struktur." Ralat ini menunjukkan ketidakpadanan antara data JSON dan struktur Go yang ditakrifkan.
Mengenal pasti Percanggahan:
Setelah memeriksa kod, nampak jelas jenis Struktur menjangkakan tatasusunan objek antara muka{} sebagai medan 'bahan'nya. Walau bagaimanapun, data JSON yang dihuraikan ialah tatasusunan itu sendiri, bukan tatasusunan objek{} antara muka.
Penyelesaian 1: Unmarshal to a Slice
Untuk menyelesaikan ketidakpadanan , adalah disyorkan untuk menyahmarshal tatasusunan JSON kepada sekeping objek antara muka{} sebaliknya. Dengan cara ini, struktur tatasusunan JSON dikekalkan dalam kod Go:
var data []interface{} err = json.Unmarshal(body, &data)
Penyelesaian 2: Tentukan Medan Struktur Khusus
Sebagai alternatif, jika data respons JSON mempunyai struktur yang konsisten, pertimbangkan untuk menentukan struct Go yang sepadan dengan medan tepat yang terdapat dalam respons. Ini membolehkan proses unmarshalling yang lebih berstruktur dan selamat jenis:
type Tick struct { ID string Name string Symbol string Rank string Price_USD string ... and so on } var data []Tick err = json.Unmarshal(body, &data)
Dengan menggunakan salah satu pendekatan ini, aplikasi boleh menghuraikan data JSON dengan jayanya dan mengelakkan ralat "tidak boleh unmarshal array ke dalam nilai Go".
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'json: cannot unmarshal array into Go'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!