我需要使用浮点数解码 JSON 字符串,例如:
{"name":"Galaxy Nexus", "price":"3460.00"}
我使用下面的 Golang 代码:
package main import ( "encoding/json" "fmt" ) type Product struct { Name string Price float64 } 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) } }
当我运行它时,得到结果:
json: cannot unmarshal string into Go value of type float64 {Name:Galaxy Nexus Price:0}
我想知道如何使用类型转换解码 JSON 字符串。
答案要简单得多。只需添加告诉 JSON interpeter 它是一个用 float64 编码的字符串,string(请注意,我只更改了Price定义):
,string
Price
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) } }