将 []byte 编组为 JSON
在 Go 中,将 []byte 编组为 JSON 与其他数据类型略有不同。 JSON 包不是直接将字节编码为数组,而是将 []byte 编码为 Base64 编码的字符串。此行为在encoding/json的文档中明确说明:
Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.
Base64编码字符串输出
在您的情况下, json.Marshal( 的输出组)包含“AAAAAQID”。这表示 []byte 切片的 Base64 编码:
originalBytes := []byte{0, 0, 0, 1, 2, 3} encodedString := base64.StdEncoding.EncodeToString(originalBytes) fmt.Println(encodedString) // Output: AAAAAQID
解码 Base64 数据
要从编码字符串中检索原始 []byte 值,您可以解码base64数据:
decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID") if err != nil { // Handle error } fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]
以上是为什么 Go 的 `json.Marshal` 将 `[]byte` 编码为 Base64 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!