Menyahkod JSON dengan Penukaran Jenis daripada String ke Float64
Apabila menyahkod rentetan JSON yang mengandungi nombor titik terapung, adalah mungkin untuk menemui ralat "json: tidak boleh menyahmarshal rentetan ke nilai Go jenis float64." Isu ini timbul apabila penyahkod JSON cuba menukar nombor secara automatik daripada rentetan kepada jenis float64.
Untuk menyelesaikan isu ini, anda boleh memberitahu penyahkod JSON secara eksplisit bahawa rentetan mewakili float64 dengan menggunakan ", string" dalam definisi struct:
type Product struct { Name string Price float64 `json:",string"` }
Dengan menambahkan tag ini, penyahkod JSON akan mengendalikan "harga" medan sebagai rentetan yang dikodkan float64, membenarkan penukaran yang betul semasa penyahkodan.
package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 `json:",string"` } func main() { s := `{"name":"Galaxy Nexus", "price":"3460.00"}` var pro Product err := json.Unmarshal([]byte(s), &pro) if err == nil { fmt.Printf("%+v\n", pro) } else { fmt.Println(err) fmt.Printf("%+v\n", pro) } }
Dengan pengubahsuaian ini, program kini akan berjaya menyahkod rentetan JSON dan menukar medan "harga" kepada jenis float64 dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan 'json: tidak boleh unmarshal rentetan ke nilai Go jenis float64' Ralat Semasa Menyahkod JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!