Go pengaturcara sering menghadapi mesej ralat "json: cannot unmarshal string into Go value of type int64" apabila cuba Unmarshal JSON data. Ralat ini berlaku apabila medan JSON sepadan dengan medan struct Go yang ditaip int64 mengandungi nilai rentetan.
Pertimbangkan struct Go berikut:
type Survey struct { Id int64 `json:"id,omitempty"` Name string `json:"name,omitempty"` }
Jika anda Marshal struct ini ke dalam JSON dan mengubah suai medan "id" dalam klien JavaScript, ia mungkin menghantar rentetan JSON seperti ini:
{"id": "1"}
di mana medan "id" kini menjadi rentetan.
Apabila anda cuba untuk menyahmarshal rentetan JSON ini ke dalam struct Go, anda akan menghadapi ralat yang disebutkan di atas.
Untuk mengendalikan situasi ini, anda boleh menentukan pilihan rentetan dalam teg JSON anda, seperti yang dilihat di bawah:
type Survey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Ini membolehkan medan "id" dibongkar sebagai int64 walaupun nilai JSON ialah rentetan.
Adalah penting untuk diperhatikan yang menyatakan omitEmpty untuk medan berteg rentetan hanya mempengaruhi proses marshaling, bukan proses unmarshaling. Ini bermakna anda tidak boleh membongkar rentetan kosong ke dalam medan int64, walaupun ia ditandakan dengan ,string,omitempty.
Atas ialah kandungan terperinci Bagaimana untuk Menyahmarshal Rentetan JSON ke dalam Nilai Int64 Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!