將 []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中文網其他相關文章!