使用json unmarshal数据到interface{}, 数字变成float64,,golang

来源:互联网 发布:after effects mac版 编辑:程序博客网 时间:2024/06/05 17:35

碰到这个问题一脸疑惑,后来不断谷歌才找到答案,小白用户献上解析如下:

这是由于JSON里的数字默认都会转成golang的float64类型引起的

进行json解析时,若以interface{}接收数据,则会按照下列规则进行解析:

bool, for JSON booleans
float64, for JSON numbers
string, for JSON strings
[]interface{}, for JSON arrays
map[string]interface{}, for JSON objects
nil for JSON null

而浮点数打印时的默认规则是超过一定长度后会换成科学计数法打印。

因此,只要在打印时指定打印格式,或者(按照LZ示例里是整数的情况时),转换为整数打印

  1. fmt.Println(int(a["id"].(float64)))
原创粉丝点击