Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyelesaikan Ralat 'json: cannot unmarshal array into Go'?

Bagaimana untuk Menyelesaikan Ralat 'json: cannot unmarshal array into Go'?

Mary-Kate Olsen
Lepaskan: 2024-12-04 18:53:11
asal
776 orang telah melayarinya

How to Resolve the

Merungkai Teka-teki "Tidak Boleh Menyahmarshal Menjadi Nilai Pergi"

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)
Salin selepas log masuk

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)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan