在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中文網其他相關文章!