我正在尝试对一部分进行 json 编码uint8
值,但这样做会产生字符串。举个例子,这个:
d := []uint8{1,2,3,4}
data, err := json.Marshal(d)
fmt.Println(string(data), err)
结果是:
"AQIDBA==" <nil>
我正期待着[1,2,3,4]
,但我得到的是这个奇怪的字符串。Here是一个带有此代码的游乐场。
那是因为你使用uint8
输入您的号码,然后uint8
是一个别名byte
(规格:数字类型)。默认情况下,字节数组和切片使用 Base64 编码进行编码,这就是您所看到的 ("AQIDBA=="
是字节的 Base64 编码文本[1, 2, 3, 4]
).
引用自json.Marhsal() doc:
数组和切片值编码为 JSON 数组,但 []byte 编码为 Base64 编码字符串,而 nil 切片编码为 null JSON 对象。
更改您的号码类型uint
or int
例如,然后你就会看到你所期望的。
例如 (去游乐场):
type MyStruct struct {
Data []uint
}
d := new(MyStruct)
d.Data = []uint{1, 2, 3, 4}
data, err := json.Marshal(d)
fmt.Println(string(data), err)
Output:
{"Data":[1,2,3,4]} <nil>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)