嘗試將位元組切片([]byte) 轉換為JSON 格式時,開發人員經常會遇到意外的字串表示形式。本文深入探討了這種行為的原因,並提供了準確封送位元組切片的解決方案。
考慮以下程式碼片段:
執行後,這段程式碼輸出:
有趣的是ByteSlice 字段,它應該包含一個位元組數組,已渲染為“AAAAAQID”。
解釋位於json 套件的文件中:
數組和切片值編碼為JSON 數組,除了[]byte 編碼為Base64 編碼字串,nil切片編碼為null JSON
在這種情況下,ByteSlice字段(位元組數組)不會編碼為 JSON 數組,而是編碼為 Base64 編碼的字串。
要如預期將 []byte 資料編組為 JSON,需要對 Base64 表示進行解碼。以下是程式碼的更新版本:
現在,產生的 JSON 輸出正確地將 ByteSlice 欄位表示為位元組數組:
以上是為什麼 Go 的 `json.Marshal` 會將 []byte 轉換為 Base64 字串,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!