Rumah > pembangunan bahagian belakang > Golang > Bilakah Adakah `json.Unmarshal` Mengembalikan Ralat dalam Pergi?

Bilakah Adakah `json.Unmarshal` Mengembalikan Ralat dalam Pergi?

Patricia Arquette
Lepaskan: 2024-11-10 11:00:03
asal
465 orang telah melayarinya

When Does `json.Unmarshal` Return an Error in Go?

Bilakah JSON Unmarshal to Structure Mengembalikan Ralat dalam Go?

Dalam Go, fungsi json.Unmarshal cuba menyahkod berformat JSON bait ke dalam struktur data sasaran. Walaupun ia berjaya menghuraikan dan mengisi medan dengan nama yang sepadan dalam JSON sumber, ia tidak menimbulkan ralat apabila nilai tidak sepadan dengan struktur sasaran.

Walau bagaimanapun, json.Unmarshal akan menghadapi ralat dalam situasi berikut:

Ralat Sintaks:

Jika Input JSON secara sintaksis tidak betul, json.Unmarshal akan mengembalikan ralat. Contohnya, jika tanda petikan yang diperlukan tiada, penyahkod akan gagal menghuraikan JSON.

type A struct {
    Name string `json:"name"`
}
data := []byte(`{"name":what?}`)
err := json.Unmarshal(data, &a)
fmt.Println(err)  // prints character 'w' looking for beginning of value
Salin selepas log masuk

Nilai JSON Tidak Boleh Diwakili Mengikut Jenis Sasaran:

Jika jenis nilai JSON tidak boleh ditukar kepada jenis medan yang sepadan dalam struktur sasaran, json.Unmarshal akan mengembalikan ralat. Contohnya, jika boolean JSON cuba diberikan kepada medan rentetan:

data := []byte(`{"name":false}`)
type B struct {
  Name string `json:"name"`
}
var b B
err = json.Unmarshal(data, &b)
fmt.Println(err) // prints cannot unmarshal bool into Go value of type string
Salin selepas log masuk

Butiran Pelaksanaan Lain:

Selain daripada ralat penukaran sintaksis dan jenis, json.Unmarshal juga boleh mengembalikan ralat dalam situasi luar biasa lain. Rujuk dokumentasi Go untuk senarai yang lebih lengkap.

Atas ialah kandungan terperinci Bilakah Adakah `json.Unmarshal` Mengembalikan Ralat dalam Pergi?. 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