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