將JSON []byte 編組為字串
問題:
問題:type Msg struct { Content []byte } func main() { helloStr := "Hello" helloSlc := []byte(helloStr) json, _ := json.Marshal(Msg{helloSlc}) fmt.Println(string(json)) }
{"Content":"SGVsbG8="}
json.Marshal 對切片內容進行了哪些轉換,原始字串內容如何
答案:
Base64 編碼預設情況下,Go 的json.Marshal 函數將[]byte 數組編碼為用於表示JSON 中原始表示JSON 中原始表示JSON位元組的base64 編碼字串。根據 JSON 規範,JSON 沒有原始位元組的本機表示。
自訂封送處理:import ( "encoding/json" "fmt" ) type Msg struct { Content []byte } func (m Msg) MarshalJSON() ([]byte, error) { return []byte(fmt.Sprintf(`{"Content": "%s"}`, m.Content)), nil } func main() { helloStr := "Hello" helloSlc := []byte(helloStr) json, _ := json.Marshal(Msg{helloSlc}) fmt.Println(string(json)) }
以上是將 Go 結構中的「[]byte」欄位編組為 JSON 時如何保留原始字串內容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!