Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型

Golang 使用 JSON unmarshal 数字到 interface{} 数字变成 float64 类型

 

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

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

使用 Golang 解析 JSON  格式数据时,若以 interface{} 接收数据,则会按照下列规则进行解析:

 

 
  1. bool, for JSON booleans

  2.  
  3. float64, for JSON numbers

  4.  
  5. string, for JSON strings

  6.  
  7. []interface{}, for JSON arrays

  8.  
  9. map[string]interface{}, for JSON objects

  10.  
  11. nil for JSON null

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

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

fmt.Println( int( a["id"].(float64) ) ) // 将 “id” 键申明为 float64 类型,再转换为 int 型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值