Dalam Go, hirisan []bait disimpan data binari mentah. Apabila cuba mengekod struct yang mengandungi []bidang bait ke dalam JSON menggunakan json.Marshal(), JSON yang terhasil mengandungi perwakilan rentetan yang tidak dijangka bagi kandungan hirisan dan bukannya data binari asal. Contohnya:
<code class="go">type Msg struct { Content []byte } func main() { msg := Msg{[]byte("Hello")} json, _ := json.Marshal(msg) fmt.Println(string(json)) // Prints {"Content":"SGVsbG8="} }</code>
json.Marshal() mengekodkan []hirisan bait sebagai rentetan berkod base64 kerana JSON tidak mempunyai perwakilan asli untuk bait mentah. Pengekodan Base64 mewakili data perduaan menggunakan jujukan aksara ASCII yang boleh dicetak.
Untuk mendapatkan semula data perduaan asal daripada rentetan yang dikodkan base64 dalam JSON, hanya menyahkod rentetan menggunakan fungsi base64.StdEncoding.DecodeString:
<code class="go">import "encoding/base64" func main() { ... decodedBytes, _ := base64.StdEncoding.DecodeString(msg.Content) fmt.Println(string(decodedBytes)) // Prints "Hello" }</code>
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Data Perduaan dalam Pengekodan Go JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!