Dalam senario ini, anda mempunyai rentetan JSON yang mengandungi nombor apungan yang perlu dinyahkodkan kepada struct Golang. Percubaan awal penyahkodan gagal disebabkan oleh ketidakpadanan antara perwakilan rentetan masuk bagi nombor apungan dan jenis float64 dalam struct.
Untuk menyelesaikan masalah ini, anda perlu mengarahkan penyahkod JSON untuk mentafsir nilai rentetan sebagai apungan64. Ini boleh dicapai dengan menambahkan tag ,string pada medan Harga dalam definisi struct:
type Product struct { Name string Price float64 `json:",string"` }
Dengan pengubahsuaian ini, penyahkod akan berjaya menukar perwakilan rentetan kepada nilai float64. Kod Golang yang dikemas kini:
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) } }
Menjalankan kod yang dikemas kini ini kini akan mengeluarkan hasil yang diingini:
{Name:Galaxy Nexus Price:3460}
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan JSON String ke Penukaran Float64 dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!