Rumah > pembangunan bahagian belakang > Golang > Mengapa JSON Membongkar Array menjadi Go Struct Menyebabkan Panik?

Mengapa JSON Membongkar Array menjadi Go Struct Menyebabkan Panik?

Linda Hamilton
Lepaskan: 2024-12-16 10:49:10
asal
779 orang telah melayarinya

Why Does JSON Unmarshaling an Array into a Go Struct Cause a Panic?

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

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:

  1. Unmarshal to a Slice:

    Ganti baris:

    decoded := &Structure{}
    Salin selepas log masuk

    dengan:

    var data []interface{}
    Salin selepas log masuk

    Ini akan menyahmarshal tatasusunan JSON kepada sekeping antara muka.

  2. 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
    }
    Salin selepas log masuk

    Kemudian, hapuskan sepotong struct ini:

    var data []Tick
    err = json.Unmarshal(body, &data)
    Salin selepas log masuk

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!

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