Dalam Go, menghuraikan strim JSON kadangkala boleh membawa kepada komplikasi, terutamanya apabila berurusan dengan integer dan nilai nol. Mari kita terokai isu biasa dan penyelesaiannya menggunakan jenis nullable.
Masalah:
Apabila menghuraikan data JSON yang mengandungi integer, anda mungkin menghadapi ralat berikut:
json: cannot unmarshal null into Go value of type int64
Ralat ini berlaku apabila anda mempunyai integer nullable dalam JSON, yang merupakan pakej Go JSON standard tidak boleh mengendalikan secara langsung.
Penyelesaian:
Untuk menangani isu ini, pertimbangkan untuk menggunakan penunjuk kepada integer. Penunjuk boleh sama ada nil (mewakili nilai nol) atau ia boleh menunjuk kepada integer dengan nilai yang berkaitan. Begini cara untuk melaksanakannya:
import ( "encoding/json" "fmt" ) var d = []byte(`{ "world":[{"data": 2251799813685312}, {"data": null}]}`) type jsonobj struct{ World []*int64 } type World struct{ Data *int64 } func main() { var data jsonobj jerr := json.Unmarshal(d, &data) if jerr != nil { fmt.Println(jerr) } for _, w := range data.World { if w == nil { fmt.Println("Got a null value") } else { fmt.Println(*w) } } }
Dalam contoh yang diubah suai ini:
Apabila menghuraikan JSON, ia mengendalikan nilai integer berangka dan null dengan betul dan mencetaknya dengan sewajarnya:
Got a null value 2251799813685312
Pendekatan ini menyediakan cara yang mudah dan berkesan untuk mengendalikan nullable integer dalam Go apabila menghuraikan strim JSON.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai Integer Null Apabila Menghapuskan JSON dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!