go json的key为数字怎么解析_golang向interface{}解析json时把所有的数字都当成float64...

最近发现 golang解析json时把所有的int,float,double等数字,向interface{}解析时都当成float64(当然被双信号包围的数字除外,任何被双引号包围的,都是字符串。),不知道是golang的内部约定还是啥。

package main

import (

"encoding/json"

"fmt"

)

func main() {

var v map[string]interface{}

jsonstr := `{"id":13,"name":"胖胖","weight":216.5,"dd":"123"}`

json.Unmarshal([]byte(jsonstr), &v)

for k, v1 := range v {

fmt.Print(k, " = ")

switch v1.(type) {

case int:

fmt.Println(v1, "is an int value.")

case string:

fmt.Println(v1, "is a string value.")

case int64:

fmt.Println(v1, "is an int64 value.")

case float64:

fmt.Println(v1, "is an float64 value.")

default:

fmt.Println(v1, "is an unknown type.")

}

}

}

输出如下:

API server listening at: 127.0.0.1:36104

weight = 216.5 is an float64 value.

dd = 123 is a string value.

id = 13 is an float64 value.

name = 胖胖 is a string value.

Process exiting with code: 0

仅作记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值