This sample is for changing from “float64” to “int” for values did unmarshal using map[string]interface{}
.
When it did unmarshal using map[string]interface{}, a number with “int” was changed to “float64”. And it shows an error as follows.
Error :
panic: interface conversion: interface {} is float64, not int
Sample Script : It solves using following script.
package main import ( "encoding/json" "fmt" "reflect" ) func main() { data := `{"key": 10}` var i map[string]interface{} json.Unmarshal([]byte(data), &i) val1 := i["key"] fmt.Printf("%v, %v ", val1, reflect.TypeOf(val1)) // 10, float64 i["key"] = int(i["key"].(float64)) val2 := i["key"] fmt.Printf("%v, %v ", val2, reflect.TypeOf(val2)) // 10, int