Rumah > pembangunan bahagian belakang > Golang > Bilakah json.Unmarshal dalam Go Mengembalikan Ralat?

Bilakah json.Unmarshal dalam Go Mengembalikan Ralat?

Mary-Kate Olsen
Lepaskan: 2024-11-15 12:16:02
asal
914 orang telah melayarinya

When Does json.Unmarshal in Go Return Errors?

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:

  • Sintaks ralat: Jika JSON salah bentuk atau mengandungi sintaks yang tidak sah, ralat akan dikembalikan. Mesej ralat akan memberikan butiran tentang lokasi ralat.
  • Nilai JSON tidak boleh diwakili oleh jenis sasaran: Jika nilai dalam JSON tidak boleh ditukar kepada jenis yang sepadan dalam struct, ralat akan dikembalikan. Contohnya, jika JSON mengandungi nilai boolean tetapi medan struct menjangkakan rentetan, json.Unmarshal akan gagal.

Contoh

Pertimbangkan kod berikut :

type A struct {
  Name string `json:"name"`
}

jsonString := `{"status": false}`
var a A
err := json.Unmarshal([]byte(jsonString), &a)
Salin selepas log masuk

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

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!

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