Menghuraikan JSON dengan Nilai Null int64 dalam Go
Apabila menghuraikan data JSON yang mengandungi nilai int64, ada kemungkinan untuk menemui nilai nol. Secara lalai, pakej pengekodan/json Go cuba untuk menyahmarshal nilai null terus ke dalam medan int64, mengakibatkan ralat kerana ia tidak boleh menukar null kepada int64.
Untuk menyelesaikan isu ini, pertimbangkan untuk menggunakan penunjuk dan bukannya medan int64 langsung . Penunjuk boleh menjadi nol atau menunjuk ke int64 dengan nilai yang berkaitan. Berikut ialah contoh:
import ( "encoding/json" "fmt" ) var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`) type jsonobj struct{ World []World } type World struct{ Data *int64 } func main() { var data jsonobj jerr := json.Unmarshal(d, &data) fmt.Println(jerr) if data.World[1].Data != nil { fmt.Println(*data.World[1].Data) } }
Dengan menggunakan penuding, medan data dalam struct Dunia boleh sama ada sifar jika nilai JSON adalah nol atau menunjuk kepada nilai int64 sebaliknya. Ini membolehkan kami mengendalikan nilai nol dengan anggun tanpa ralat.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Nilai Null int64 Apabila Menghuraikan JSON dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!