Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Mengendalikan Data Perduaan dalam Pengekodan Go JSON?

Bagaimana untuk Mengendalikan Data Perduaan dalam Pengekodan Go JSON?

Patricia Arquette
Patricia Arquetteasal
2024-11-05 17:30:02350semak imbas

How to Handle Binary Data in Go JSON Encoding?

Pengekodan Rentetan []bait dalam JSON Menggunakan Go

Masalah: Pengekodan JSON Data Perduaan yang tidak dijangka

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>

Sebab Pengekodan Base64

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.

Penyelesaian: Memulihkan Data Perduaan Asal

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn