Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengendalikan 'json: tidak boleh unmarshal rentetan ke nilai Go jenis float64' Ralat Semasa Menyahkod JSON?

Bagaimana untuk Mengendalikan 'json: tidak boleh unmarshal rentetan ke nilai Go jenis float64' Ralat Semasa Menyahkod JSON?

Barbara Streisand
Lepaskan: 2024-12-31 14:15:10
asal
552 orang telah melayarinya

How to Handle

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"`
}
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan