Rumah > pembangunan bahagian belakang > Golang > Mengapa Marshaling []bait kepada JSON Menghasilkan Rentetan Dikodkan Base64?

Mengapa Marshaling []bait kepada JSON Menghasilkan Rentetan Dikodkan Base64?

Susan Sarandon
Lepaskan: 2024-12-07 14:34:13
asal
558 orang telah melayarinya

Why Does Marshaling []byte to JSON Result in a Base64 Encoded String?

Marshaling []bait ke JSON: Memahami Perwakilan Rentetan

Apabila cuba untuk mengawal nilai []bait ke dalam format JSON, anda mungkin menghadapi pelik output rentetan seperti yang diserlahkan dalam soalan asal. Artikel ini membincangkan kedua-dua belah enigma: cara untuk mengawal []bait kepada JSON dengan betul dan sebab output berubah menjadi rentetan yang diperhatikan.

Penyelesaian: Marshaling []bait kepada JSON

Menurut dokumentasi Golang rasmi untuk json.Marshal, nilai tatasusunan dan kepingan mengekod sebagai tatasusunan JSON. Pengecualian kepada peraturan ini digunakan pada hirisan []bait, yang dikodkan secara khusus sebagai rentetan berkod base64. Sebaliknya, kepingan nil dikodkan sebagai objek JSON nol.

Oleh itu, untuk mengawal []bait kepada JSON dengan tepat, ia mesti dilemparkan secara eksplisit sebagai rentetan berkod base64 semasa proses marshaling.

Sebab: Pengekodan Base64 untuk []bait

Tingkah laku yang diperhatikan dalam output soalan asal adalah akibat langsung daripada mekanisme pengekodan yang digunakan untuk hirisan bait dalam JSON. JSON tidak boleh mewakili hirisan bait mentah secara asli; oleh itu, ia ditukar kepada rentetan berkod base64. Pengekodan Base64 membenarkan perwakilan data binari sebagai rentetan, menjadikannya sesuai untuk penghantaran dan penyimpanan dalam format berasaskan teks seperti JSON.

Sebagai contoh, rentetan "AAAAAAQID" yang dilihat dalam output mewakili base64- versi dikodkan bagi []hirisan bait [0, 0, 0, 1, 2, 3].

Untuk mendapatkan semula bait asal potong daripada perwakilan base64nya, anda boleh menggunakan fungsi base64.StdEncoding.DecodeString, seperti yang digambarkan dalam kod di bawah:

import "encoding/base64"

func decodeBase64(encodedString string) ([]byte, error) {
    return base64.StdEncoding.DecodeString(encodedString)
}
Salin selepas log masuk

Kesimpulan

Marshaling []bait kepada JSON melibatkan pengekodan secara eksplisit sebagai rentetan base64, teknik yang didorong oleh keperluan untuk mewakili data binari dalam format berasaskan teks. Memahami mekanisme pengekodan ini membantu mentafsirkan keluaran rentetan yang kelihatan pelik yang ditemui semasa proses marshaling.

Atas ialah kandungan terperinci Mengapa Marshaling []bait kepada JSON Menghasilkan Rentetan Dikodkan Base64?. 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