为了账号安全,请及时绑定邮箱和手机立即绑定

恐慌接口转换接口 {} 是 float64 而不是 int64

恐慌接口转换接口 {} 是 float64 而不是 int64

Go
慕容708150 2022-10-24 16:18:50
我收到以下错误panic: interface conversion: interface {} is float64, not int64我不确定 float64 来自哪里 我将类型设置为 int64 但不确定 float64 来自哪里type AccessDetails struct {    AccessUuid   string  `json:"access_uuid"`    Email        string  `json:"email"`    Refresh      int64    `json:"refresh"`    Expiry       int64   `json:"expiry"`    Permission   string  `json:"permission"`    Scope        string  `json:"scope"`}func GetAccessDetails(c *fiber.Ctx) (*AccessDetails, error) {    ad := &AccessDetails{}    cookie := c.Cookies("access_token")    var err error    token, err := jwt.Parse(cookie, func(token *jwt.Token) (interface{}, error) {        return []byte(os.Getenv("ACCESS_SECRET")), nil    })    if err != nil {        return nil, err    }    payload := token.Claims.(jwt.MapClaims)        ad.Email = payload["sub"].(string)    ad.AccessUuid = payload["access_uuid"].(string)    ad.Refresh = payload["refresh"].(int64)    ad.Expiry = payload["exp"].(int64)    ad.Permission = payload["permission"].(string)    ad.Scope = payload["scope"].(string)    return ad, nil}错误似乎来自ad.Refresh = payload["refresh"].(int64) 我认为我只需要知道如何将类型从 float64 转换为 int64 的行,反之亦然,用于接口 {}我已经尝试了一切将类型更改回 int64 的方法,但是我遇到了一个错误,现在需要帮助才能继续前进这是 cookie 中的有效负载数据在 jwt 解码后的样子的示例{  "access_uuid": "c307ac76-e591-41d0-a638-6dcc2f963704",  "exp": 1642130687,  "permission": "user",  "refresh": 1642734587,  "sub": "test3@example.com"}
查看完整描述

1 回答

?
慕姐4208626

TA贡献1852条经验 获得超7个赞

ad.Refresh = int64(payload["refresh"].(float64))
ad.Expiry = int64(payload["exp"].(float64))

您需要首先断言接口值的准确动态类型,然后,如果成功,您可以其转换为您想要的类型。

请注意,接口值的原因float64是因为这是encoding/json解码器在将 JSON 数字解组为interface{}值时的默认设置。

为了将 JSON 解组为接口值,Unmarshal 将其中一项存储在接口值中:

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


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号