Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahkod Rentetan Dikodkan JSON Bersarang dalam Go?

Bagaimana untuk Menyahkod Rentetan Dikodkan JSON Bersarang dalam Go?

Susan Sarandon
Lepaskan: 2024-12-05 08:12:13
asal
426 orang telah melayarinya

How to Decode Nested JSON-Encoded Strings in Go?

Menyahkod JSON dengan Rentetan Dikodkan Bersarang

Dalam senario yang disediakan, maklumat WebSocket diterima dalam bentuk respons JSON yang merangkumi JSON bersarang -tali berkod. Matlamatnya ialah untuk menyahkod JSON ini ke dalam struktur data Go tersuai.

Percubaan awal untuk penyahkodan gagal disebabkan oleh aksara yang tidak sah dalam medan "teks" rentetan JSON bersarang. Ini kerana nilai tersebut mengandungi penanda HTML, yang bukan sintaks JSON yang sah.

Penyahkodan Dua Langkah

Untuk mengatasi isu ini, proses penyahkodan perlu dilakukan dalam dua langkah:

  1. Nyahkod respons JSON luar ke dalam struktur data yang merangkumi sekeping rentetan untuk medan "args".
  2. Gelung pada kepingan "args" dan nyahkod setiap rentetan individu sebagai JSON.

Contoh Kod

Inilah coretan kod dikemas kini yang melaksanakan proses penyahkodan dua langkah ini:

type main struct {
    Name string   `json:"name"`
    Args []string `json:"args"`
}

type arg struct {
    Method string `json:"method"`
    Params par    `json:"params"`
}

type par struct {
    Channel   string `json:"channel,omitempty"`
    Name      string `json:"name,omitempty"`
    NameColor string `json:"nameColor,omitempty"`
    Text      string `json:"text,omitempty"`
    Time      int64  `json:"time,omitempty"`
}

str := `{"name":"message","args":["{\"method\":\"chatMsg\",\"params\":{\"channel\":\"channel\",\"name\":\"name\",\"nameColor\":\"B5B11E\",\"text\":\"<a href=\\"https://play.spotify.com/browse\\" target=\\"_blank\\">https://play.spotify.com/browse</a>\",\"time\":1455397119}}"]}`

var m main
if err := json.Unmarshal([]byte(str), &m); err != nil {
    log.Fatal(err)
}

for _, argStr := range m.Args {
    var args arg
    if err := json.Unmarshal([]byte(argStr), &args); err != nil {
        log.Fatal(err)
    }
    fmt.Println(args)
}
Salin selepas log masuk

Ini kod menunjukkan proses penyahkodan bersarang, membenarkan aplikasi mengekstrak data yang dikehendaki daripada respons JSON yang mengandungi rentetan yang dikodkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Rentetan Dikodkan JSON Bersarang dalam 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