首頁 >後端開發 >Golang >為什麼 Go 的 `json.Marshal` 會將 []byte 轉換為 Base64 字串,如何修復它?

為什麼 Go 的 `json.Marshal` 會將 []byte 轉換為 Base64 字串,如何修復它?

Linda Hamilton
Linda Hamilton原創
2024-12-22 00:04:17684瀏覽

Why does Go's `json.Marshal` convert []byte to a base64 string, and how can I fix it?

將[]byte 編組為JSON:解碼神秘字串

嘗試將位元組切片([]byte) 轉換為JSON 格式時,開發人員經常會遇到意外的字串表示形式。本文深入探討了這種行為的原因,並提供了準確封送位元組切片的解決方案。

令人困惑的案例

考慮以下程式碼片段:

執行後,這段程式碼輸出:

有趣的是ByteSlice 字段,它應該包含一個位元組數組,已渲染為“AAAAAQID”。

揭開謎底

解釋位於json 套件的文件中:

數組和切片值編碼為JSON 數組,除了[]byte 編碼為Base64 編碼字串,nil切片編碼為null JSON

在這種情況下,ByteSlice字段(位元組數組)不會編碼為 JSON 數組,而是編碼為 Base64 編碼的字串。

解決方案:Base64 解碼

要如預期將 []byte 資料編組為 JSON,需要對 Base64 表示進行解碼。以下是程式碼的更新版本:

現在,產生的 JSON 輸出正確地將 ByteSlice 欄位表示為位元組數組:

以上是為什麼 Go 的 `json.Marshal` 會將 []byte 轉換為 Base64 字串,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn