I need to decode a JSON string with the float number like:
{"name":"Galaxy Nexus", "price":"3460.00"}
I use the Golang code below:
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) } }
When I run it, get the result:
json: cannot unmarshal string into Go value of type float64 {Name:Galaxy Nexus Price:0}
I want to know how to decode the JSON string with type convert.
The answer is considerably less complicated. Just add tell the JSON interpeter it's a string encoded float64 with ,string
(note that I only changed the Price
definition):
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) } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With