Ralat Penyahkodan JSON dalam Go
Apabila menyahkod JSON ke dalam struct menggunakan fungsi json.Unmarshal dalam Go, adalah penting untuk memahami keadaan di bawah yang mana ralat akan dikembalikan.
Apabila Ralat Tidak Dikembalikan
Tidak seperti sesetengah bahasa, penyahkod JSON dalam Go tidak melaporkan ralat jika nilai dalam sumber JSON tidak sepadan dengan nilai dalam struct sasaran. Sebagai contoh, ia tidak dianggap sebagai ralat jika JSON mengandungi medan yang tidak terdapat dalam struct.
Apabila Ralat Dikembalikan
Walau bagaimanapun, json.Unmarshal akan mengembalikan ralat dalam situasi berikut:
Contoh
Pertimbangkan kod berikut :
type A struct { Name string `json:"name"` } jsonString := `{"status": false}` var a A err := json.Unmarshal([]byte(jsonString), &a)
Dalam contoh ini, json.Unmarshal tidak akan mengembalikan ralat, walaupun JSON tidak mengandungi medan nama yang dijangkakan. Penyahkod hanya akan mengabaikan medan status dan membiarkan medan Nama struct A kosong.
Walau bagaimanapun, jika JSON mengandungi perkara berikut:
{"name": false}
json.Unmarshal akan mengembalikan ralat kerana nilai JSON tidak boleh ditukar kepada jenis rentetan.
Atas ialah kandungan terperinci Bilakah json.Unmarshal dalam Go Mengembalikan Ralat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!