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
Susan Sarandonasal
2024-12-07 14:34:13549semak imbas

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)
}

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!

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