【发布时间】:2020-08-05 08:20:06
【问题描述】:
我正在尝试将 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
有什么方法可以在 Go 中将带有负整数的 JSON 解组数组转换为字节切片?
【问题讨论】:
-
强制转换为 uint8 时,您希望 -14 的值是多少?
[]byte==[]uint8注意:未签名 - 尝试将您的类型更改为[]int8 -
尝试将 -14 分配给 uint8 的变量:
var u uint8; u=-14。有些事情是不可能的。只需使用带符号的 int。 -
如果您想要原始数据,您可以使用
json.RawMessage,然后将其转换为[]byte,使用简单的conversion 表达式。 -
您不能将负数放入无符号整数中,这是不可能的。除非你自己写编译器
-
@kofoworola 即使您确实编写了自己的编译器。
uint表示 无符号 整数。如果它可以容纳负值,则它不是无符号整数。
标签: arrays json go struct slice