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

Bagaimana untuk Mengendalikan Data Perduaan dalam Pengekodan Go JSON?

Patricia Arquette
Lepaskan: 2024-11-05 17:30:02
asal
464 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan