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

Arrays Go中有符号整数的JSON解组数组,arrays,json,go,struct,slice,Arrays,Json,Go,Struct,Slice,我试图在Go中将JSON从整数数组解组到字节片 问题是,只有当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 &l

我试图在Go中将JSON从整数数组解组到字节片

问题是,只有当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
无法解组配置文件;err=json:无法解组uint8类型的数字-14 int-to-Go结构字段
是否有任何方法可以将带有负整数的JSON数组解组到Go中的字节片中

是否有任何方法可以将带有负整数的JSON数组解组到Go中的字节片中


不,因为,正如任何大于255的数字一样。

谢谢大家的回答

我找到了解决方案:因为我想要一个字节数组,而字节不能保存有符号的int,所以我可以做的是先在JSON输入中脱机将有符号的int转换为无符号的int,然后用新的无符号数组进行JSON解组

连结至游乐场:

参考代码:

主程序包
进口(
“fmt”
)
func main(){
arr:=[]int8{-14,1,2,3,4}
变量字节[]字节
对于u,val:=范围arr{
字节=追加(字节,转换字节(val))
}
fmt.Println(字节)//将打印[242 1 2 3 4]
}
func convertToByte(值int8)字节{
返回字节(值)
}

当强制为uint8时,您希望-14值是什么<代码>[]字节==
[]uint8
注意:未签名-尝试将您的类型更改为
[]int8
尝试将-14赋值给uint8的变量:
var u uint8;u=-14
。有些事情是不可能的。只需使用带符号的整数。如果需要原始数据,可以使用它,然后使用普通go表达式将其转换为
[]字节
。不能在无符号整数中放入负数,这是不可能的。除非你自己写compiler@kofoworola即使你写了自己的编译器
uint
表示无符号整数。如果它可以保存负值,则它不是无符号整数。