如何在封送到json时强制将“[8]字节”编码为十六进制
默认情况下,字节片编组为Base64字符串,字节数组按原样转换:如何在封送到json时强制将“[8]字节”编码为十六进制,json,go,Json,Go,默认情况下,字节片编组为Base64字符串,字节数组按原样转换: func main() { type Foo struct { ByteSlice []byte ByteArray [6]byte } foo := Foo { ByteSlice: []byte{0, 0, 0, 1, 2, 3}, ByteArray: [6]byte{0, 0, 0, 1, 2, 3}, } text,
func main() {
type Foo struct {
ByteSlice []byte
ByteArray [6]byte
}
foo := Foo {
ByteSlice: []byte{0, 0, 0, 1, 2, 3},
ByteArray: [6]byte{0, 0, 0, 1, 2, 3},
}
text, _ := json.Marshal(foo)
fmt.Printf("%s", text)
}
输出:
{"ByteSlice":"AAAAAQID","ByteArray":[0,0,0,1,2,3]}
有没有办法对字节片使用十六进制字符串转换
有没有办法对字节片使用十六进制字符串转换
不,没有
你必须自己编码。可以使用字符串字段写入新结构,也可以按照包json的文档中所述编写自己的UnmarshalJSON方法
有没有办法对字节片使用十六进制字符串转换
不,没有
你必须自己编码。可以使用字符串字段写入新结构,也可以按照包json的文档中所述编写自己的UnmarshalJSON方法。如果定义自定义类型,则可以自定义json序列化。我已经替换了
[]字节
,例如:
输出:
{"ByteSlice":"000000010203","ByteArray":[0,0,0,1,2,3]}
代码:
如果定义自定义类型,则可以自定义JSON序列化。我已经替换了
[]字节
,例如:
输出:
{"ByteSlice":"000000010203","ByteArray":[0,0,0,1,2,3]}
代码:
另外,要使用它,您可以执行
MyByteSlice(arr[:])
其中arr
是您的字节数组。这是从数组中生成切片的方式,基本上就是引用数组。此外,要使用它,可以执行MyByteSlice(arr[:])
其中arr
是字节数组。这就是如何从数组中生成切片,基本上就是获取对数组的引用。