Home >Backend Development >Golang >How to Handle String-to-Float64 Conversion Errors When Decoding JSON in Go?
Decoding JSON with Type Conversion from String to Float64
In Golang, decoding JSON strings containing float numbers can sometimes result in errors when using types like float64. The following delves into the issue and provides a solution.
Consider the following JSON input:
{"name":"Galaxy Nexus", "price":"3460.00"}
And a corresponding Go type:
type Product struct { Name string Price float64 }
Unmarshaling the JSON using the built-in json package may produce an error:
json: cannot unmarshal string into Go value of type float64
This error occurs because the JSON price field is a string, while the Go Price field is a float64. To resolve this, inform the JSON interpreter that the price field is a string-encoded float64:
type Product struct { Name string Price float64 `json:",string"` }
By adding "string" to the json tag, the interpreter will automatically convert the string price to a float64 during decoding. Running the modified code will now produce the expected output:
{Name:Galaxy Nexus Price:3460}
In cases where type conversion is necessary during JSON decoding, using the json tag with "string" (or other type conversion specifiers) provides a straightforward and effective solution.
The above is the detailed content of How to Handle String-to-Float64 Conversion Errors When Decoding JSON in Go?. For more information, please follow other related articles on the PHP Chinese website!