Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menyahkod Data JSON yang Mengandungi Rentetan Berkod JSON?

Bagaimana untuk Menyahkod Data JSON yang Mengandungi Rentetan Berkod JSON?

Mary-Kate Olsen
Lepaskan: 2024-12-03 09:46:11
asal
911 orang telah melayarinya

How to Decode JSON Data Containing JSON-Encoded Strings?

Menyahkod JSON Termasuk Rentetan Dikodkan JSON

Apabila menerima data JSON daripada sumber luaran, adalah perkara biasa untuk menemui JSON yang termasuk rentetan JSON yang dikodkan. Mengendalikan senario ini memerlukan proses penyahkodan dua langkah.

Pertimbangkan JSON berikut:

{"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}}"]}
Salin selepas log masuk

Untuk menyahkod ini dengan betul, kami mentakrifkan struktur berikut:

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"`
}
Salin selepas log masuk

Langkah pertama ialah menyahkod lapisan paling luar:

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

Seterusnya, kita menyahkod rentetan berkod JSON dalam tatasusunan "args":

var args arg
if err := json.Unmarshal([]byte(m.Args[0]), &amp;args); err != nil {
    log.Fatal(err)
}
Salin selepas log masuk

Menggunakan pendekatan dua langkah ini memastikan aplikasi menghuraikan kedua-dua JSON paling luar dan rentetan JSON terbenam dengan betul.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod Data JSON yang Mengandungi Rentetan Berkod JSON?. 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