Rumah >pembangunan bahagian belakang >Golang >Mengapakah `json.Marshal` Go Mengekodkan `[]bait` sebagai Rentetan Base64?

Mengapakah `json.Marshal` Go Mengekodkan `[]bait` sebagai Rentetan Base64?

Patricia Arquette
Patricia Arquetteasal
2024-12-10 01:23:10347semak imbas

Why Does Go's `json.Marshal` Encode `[]byte` as a Base64 String?

Marshaling []bait kepada JSON

Dalam Go, marshaling []bait kepada JSON berbeza sedikit daripada jenis data lain. Daripada mengekodkan bait secara langsung sebagai tatasusunan, pakej JSON mengekod []bait sebagai rentetan berkod base64. Tingkah laku ini dinyatakan secara eksplisit dalam dokumentasi untuk pengekodan/json:

Array and slice values encode as JSON arrays, except that []byte encodes as a base64-encoded string, and a nil slice encodes as the null JSON object.

Base64-Encoded String Output

Dalam kes anda, output json.Marshal( kumpulan) mengandungi "AAAAQID". Ini mewakili pengekodan base64 bagi kepingan []bait anda:

originalBytes := []byte{0, 0, 0, 1, 2, 3}
encodedString := base64.StdEncoding.EncodeToString(originalBytes)

fmt.Println(encodedString) // Output: AAAAAQID

Menyahkod Data Base64

Untuk mendapatkan semula nilai []bait asal daripada rentetan yang dikodkan, anda boleh menyahkod data base64:

decodedBytes, err := base64.StdEncoding.DecodeString("AAAAAQID")
if err != nil {
    // Handle error
}

fmt.Println(decodedBytes) // Output: [0 0 0 1 2 3]

Atas ialah kandungan terperinci Mengapakah `json.Marshal` Go Mengekodkan `[]bait` sebagai Rentetan 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