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

Go中的JSON解组有符号整数数组

Go中的JSON解组有符号整数数组

Go
幕布斯6054654 2022-06-01 11:19:10
我正在尝试将 JSON 从整数数组解组为 Go 中的字节片。问题是只有当 JSON 中的数组包含正整数时我们才能这样做,因为它将在 Go 中被识别为 uint8。当数组包含负整数时它不起作用。例如:这个数组可以工作:[1, 2, 3, 4, 5]这个数组不起作用:[-14, 2, 3, 4, 5](-14 是负数)这是我收到的错误消息Cannot unmarshal config file; err= json: cannot unmarshal number -14 int to Go struct field <struct_field> of type uint8有什么方法可以将带有负整数的 JSON 解组数组转换为 Go 中的字节切片?
查看完整描述

2 回答

?
蝴蝶不菲

TA贡献1810条经验 获得超4个赞

有什么方法可以将带有负整数的 JSON 解组数组转换为 Go 中的字节切片?

不,因为负数超出了字节值的有效范围,就像任何大于 255 的数字一样。


查看完整回答
反对 回复 2022-06-01
?
冉冉说

TA贡献1877条经验 获得超1个赞

我找到了解决方案:由于我想要一个字节数组并且字节不能保存有符号整数,我可以做的是首先在离线 JSON 输入中将有符号整数转换为无符号,然后我可以使用新的无符号数组进行 JSON 解组。


游乐场链接:https: //play.golang.org/p/Th2DC9AGEEs


参考代码:


package main


import (

    "fmt"

)


func main() {

    arr := []int8{-14,1,2,3,4}

    var bytes []byte

    for _, val := range arr {

        bytes = append(bytes, convertToByte(val))

    }

    fmt.Println(bytes) // will print [242 1 2 3 4]

}


func convertToByte(value int8) byte {

    return byte(value)

}


查看完整回答
反对 回复 2022-06-01
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信