Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengendalikan Ralat Penukaran String-to-Float64 Apabila Menyahkod JSON dalam Go?

Bagaimana untuk Mengendalikan Ralat Penukaran String-to-Float64 Apabila Menyahkod JSON dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-12-25 00:39:11159semak imbas

How to Handle String-to-Float64 Conversion Errors When Decoding JSON in Go?

Menyahkod JSON dengan Penukaran Jenis daripada String ke Float64

Di Golang, menyahkod rentetan JSON yang mengandungi nombor apungan kadangkala boleh mengakibatkan ralat apabila menggunakan jenis seperti float64. Perkara berikut menyelidiki isu tersebut dan menyediakan penyelesaian.

Pertimbangkan input JSON berikut:

{"name":"Galaxy Nexus", "price":"3460.00"}

Dan jenis Go yang sepadan:

type Product struct {
    Name  string
    Price float64
}

Menyahmarshall JSON menggunakan pakej json terbina dalam mungkin menghasilkan ralat:

json: cannot unmarshal string into Go value of type float64

Ralat ini berlaku kerana medan harga JSON ialah rentetan, manakala medan Harga Pergi ialah float64. Untuk menyelesaikan masalah ini, maklumkan kepada penterjemah JSON bahawa medan harga ialah float64 berkod rentetan:

type Product struct {
    Name  string
    Price float64 `json:",string"`
}

Dengan menambahkan "rentetan" pada tag json, penterjemah akan menukar harga rentetan secara automatik kepada float64 semasa penyahkodan. Menjalankan kod yang diubah suai kini akan menghasilkan output yang dijangkakan:

{Name:Galaxy Nexus Price:3460}

Dalam kes penukaran jenis diperlukan semasa penyahkodan JSON, menggunakan tag json dengan "rentetan" (atau penentu penukaran jenis lain) menyediakan cara yang mudah dan penyelesaian yang berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat Penukaran String-to-Float64 Apabila Menyahkod JSON dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn