Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Marshal Medan []bait sebagai String dalam Pengekodan JSON Go?

Bagaimana untuk Marshal Medan []bait sebagai String dalam Pengekodan JSON Go?

Linda Hamilton
Lepaskan: 2024-11-07 03:29:02
asal
1043 orang telah melayarinya

How to Marshal a []byte Field as a String in Go JSON Encoding?

Marshaling JSON []bait sebagai Strings in Go

Apabila mengekodkan struct yang mengandungi []byte medan ke dalam JSON, perwakilan rentetan yang tidak dijangka mungkin hasil. Dalam pengekodan ini, medan []bait disusun sebagai rentetan berkod base64, seperti yang dinyatakan dalam dokumentasi:

"Nilai tatasusunan dan hirisan mengekod sebagai tatasusunan JSON, kecuali []bait mengekod sebagai base64- rentetan yang dikodkan dan sekeping nol dikodkan sebagai objek JSON nol."

Untuk menggambarkan kelakuan ini, pertimbangkan struct Msg berikut:

<code class="go">type Msg struct {
    Content []byte
}</code>
Salin selepas log masuk

Dalam contoh berikut, rentetan "Hello " ditukar kepada []hirisan bait helloSlc dan diberikan kepada medan Kandungan objek Msg obj:

<code class="go">helloStr := "Hello"
helloSlc := []byte(helloStr)
obj := Msg{helloSlc}</code>
Salin selepas log masuk

Setelah mengekod obj kepada JSON menggunakan json.Marshal, JSON yang terhasil mengandungi rentetan berkod base64 perwakilan medan []bait:

<code class="go">json, _ := json.Marshal(obj)
fmt.Println(string(json))</code>
Salin selepas log masuk

Output:

{"Content":"SGVsbG8="}
Salin selepas log masuk

Untuk mendapatkan nilai rentetan asal "Hello" dalam output JSON, medan []bait perlu dinyahkod secara eksplisit daripada perwakilan berkod base64 sebelum pengekodan kepada JSON. Ini boleh dicapai menggunakan pakej pengekodan/base64:

<code class="go">import (
    "encoding/base64"
    "encoding/json"
    "fmt"
)

type Msg struct {
    Content string
}

func main() {
    helloSlc := []byte("Hello")
    obj := Msg{string(base64.StdEncoding.EncodeToString(helloSlc))}
    json, _ := json.Marshal(obj)
    fmt.Println(string(json))
}</code>
Salin selepas log masuk

Output:

{"Content":"Hello"}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Marshal Medan []bait sebagai String dalam Pengekodan JSON Go?. 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