gpt4 book ai didi

从 json 转换 int 的 Golang json 错误

转载 作者:IT王子 更新时间:2023-10-29 02:29:12 26 4
gpt4 key购买 nike

我正在尝试执行一个简单的解码并从下面的代码中提取 int 信息。我从另一个 stackoverflow 找到了一个链接:link .虽然,它对我的​​情况没有帮助。根据ideone的程序认为数据是一个 float 。

package main
import "fmt"
import "encoding/json"

func main(){
byt := []byte(`{"status": "USER_MOVED_LEFT", "id":1, "x":5, "y":3}`)
var dat map[string]interface{}
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}
num := dat["id"].(int)
fmt.Println(num)
}

最佳答案

如果您要转换 bytmap[string]interfaec{}数字的默认值为 float64 .

func main(){
byt := []byte(`{"status": "USER_MOVED_LEFT", "id":1, "x":5, "y":3}`)
var dat map[string]interface{}
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}

fmt.Println(reflect.TypeOf(dat["id"])) // print the type of value
num := dat["id"].(float64)
fmt.Println(num)
}

但是您也可以通过转换 byt 来改变这种行为这是你的数据到 struct像这样:

type myStruct struct {
Status string
Id int
x int
y int
}

func main() {
byt := []byte(`{"status": "USER_MOVED_LEFT", "id":1, "x":5, "y":3}`)
dat := myStruct{}
if err := json.Unmarshal(byt, &dat); err != nil {
panic(err)
}

fmt.Println(reflect.TypeOf(dat.Id))
fmt.Printf("%+v\n", dat.Id)

}

关于从 json 转换 int 的 Golang json 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45177878/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com