Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahkod Rentetan JSON dengan Nilai Float64 yang Disimpan sebagai Rentetan dalam Go?

Bagaimana untuk Menyahkod Rentetan JSON dengan Nilai Float64 yang Disimpan sebagai Rentetan dalam Go?

Linda Hamilton
Lepaskan: 2025-01-01 12:59:11
asal
189 orang telah melayarinya

How to Decode JSON Strings with Float64 Values Stored as Strings in Go?

Menyahkod JSON dengan Penukaran Jenis daripada String kepada float64 dalam Go

Menghuraikan rentetan JSON yang mengandungi nilai float64 boleh menimbulkan cabaran apabila nilai disimpan sebagai rentetan. Untuk menangani isu ini, Go menyediakan penyelesaian yang mudah.

Memahami Ralat:

Apabila cuba menyahkod rentetan JSON seperti "{"name":"Galaxy Nexus ", "price":"3460.00"}" menggunakan fungsi json.Unmarshal, anda mungkin menghadapi perkara berikut ralat:

json: cannot unmarshal string into Go value of type float64
Salin selepas log masuk

Ralat ini berlaku kerana penyahkod JSON cuba menukar perwakilan rentetan nombor float64 kepada nilai float64 secara langsung, yang tidak disokong.

Penyelesaian: Anotasi Penukaran Taip

Untuk menyelesaikan isu ini, anda perlu mengarahkan penyahkod secara eksplisit untuk merawat rentetan sebagai float64 menggunakan anotasi penukaran jenis. Anotasi ini ditambahkan pada definisi medan dalam struct Produk:

type Product struct {
    Name  string
    Price float64 `json:",string"`
}
Salin selepas log masuk

Teg ",string" memberitahu penyahkod JSON bahawa medan Harga ialah rentetan yang harus ditukar kepada float64.

Kod Kemas Kini:

Berikut ialah Go yang dikemas kini kod:

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

Output Jangkaan:

Menjalankan kod ini akan menghasilkan output yang dijangkakan:

{Name:Galaxy Nexus Price:3460}
Salin selepas log masuk

Fungsi json.Unmarshal berjaya menyahkod rentetan JSON dan menukar harga daripada rentetan kepada float64.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Rentetan JSON dengan Nilai Float64 yang Disimpan sebagai Rentetan dalam Go?. 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