首頁 > 後端開發 > Golang > 如何使用 Go 中儲存為字串的 Float64 值解碼 JSON 字串?

如何使用 Go 中儲存為字串的 Float64 值解碼 JSON 字串?

Linda Hamilton
發布: 2025-01-01 12:59:11
原創
176 人瀏覽過

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

在Go 中使用從String 到float64 的型別轉換來解碼JSON

解析包含float64 值的 RSON 字串在儲存值時可能會帶來挑戰作為字串。為了解決這個問題,Go 提供了一個簡單的解決方案。

理解錯誤:

當嘗試解碼像"{"name":"Galaxy Nexus 這樣的JSON 字串時", "price":"3460.00"} " 使用json.Unmarshal函數,你可能會遇到以下情況錯誤:

json: cannot unmarshal string into Go value of type float64
登入後複製

出現此錯誤是因為 JSON 解碼器嘗試將 float64 數字的字串表示形式直接轉換為 float64 值,但不支援這種方式。

解決方案:型別轉換註解

要解決此問題,需要明確指示解碼器將字串視為 float64使用型別轉換註解。此註解被加入到 Product 結構中的欄位定義:

type Product struct {
    Name  string
    Price float64 `json:",string"`
}
登入後複製

「,string」標籤告訴 JSON 解碼器 Price 欄位是一個應該轉換為 float64 的字串。

更新的程式碼:

這是更新的Go程式碼:

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)
    }
}
登入後複製

預期輸出:

執行此程式碼將產生預期輸出:

{Name:Galaxy Nexus Price:3460}
登入後複製

json.Unmarshal 函數成功解碼JSON 字串並將價格從字串轉換為float64。

以上是如何使用 Go 中儲存為字串的 Float64 值解碼 JSON 字串?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板