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
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
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!