Menyahmarshal Integer Berekod Rentetan dalam Go
Apabila cuba menyahmarshal JSON dengan nilai rentetan ke dalam medan integer, seseorang mungkin menghadapi ralat: "json: tidak boleh menyahmarshal rentetan ke dalam nilai Go jenis int64." Ini kerana JSON unmarshaling secara lalai menganggap jenis berangka, seperti int64, harus mengandungi aksara berangka.
Isu:
Struktur Go yang mentakrifkan medan int64 sedang menerima JSON dengan yang sepadan medan dikodkan sebagai rentetan. Ketidakpadanan dalam jenis data ini menyebabkan proses unmarshaling gagal.
Penyelesaian:
Penyelesaian yang disyorkan ialah menggunakan teg ",string" dalam tag struct json untuk medan integer . Ini mengarahkan proses unmarshaling untuk menerima nilai rentetan jenis:
type tySurvey struct { Id int64 `json:"id,string,omitempty"` Name string `json:"name,omitempty"` }
Pelaksanaan:
Dengan struct yang diubah suai, data JSON dengan medan id yang dikodkan sebagai rentetan kini boleh berjaya menyahkodkan ke dalam objek Go jenis tySurvey.
Nota:
Adalah penting untuk diingat bahawa menyatakan pengabaian dalam teg tidak akan membenarkan rentetan kosong dinyahkod. omitempty digunakan secara eksklusif untuk tujuan pengekodan.
Atas ialah kandungan terperinci Bagaimana untuk Unmarshal String-encoded Integers dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!