1.问题现象描述
使用json.Unmarshal()
反序列化时,出现了科学计数法,参考代码如下:
jsonStr := `{"number":1234567}`result := make(map[string]interface{})err := json.Unmarshal([]byte(jsonStr), &result)if err != nil {
fmt.Println(err)}fmt.Println(result)// 输出// map[number:1.234567e+06]
这个问题不是必现,只有当数字的位数大于 6 位时,才会变成了科学计数法。
2.问题影响描述
当数据结构未知,使用map[string]interface{}
来接收反序列化结果时,如果数字的位数大于 6 位,都会变成科学计数法,用到的地方都会受到影响。
3.引起问题的原因
从encoding/json