首頁 > 後端開發 > Golang > 為什麼 Go 的 `json.Marshal` 會將 `[]byte` 編碼為 Base64 字串?

為什麼 Go 的 `json.Marshal` 會將 `[]byte` 編碼為 Base64 字串?

Patricia Arquette
發布: 2024-12-10 01:23:10
原創
337 人瀏覽過

Why Does Go's `json.Marshal` Encode `[]byte` as a Base64 String?

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板