Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod JSON dengan Rentetan Dikodkan JSON Terbenam?

Bagaimana untuk Menyahkod JSON dengan Rentetan Dikodkan JSON Terbenam?

Linda Hamilton
Linda Hamiltonasal
2024-12-16 09:59:11171semak imbas

How to Decode JSON with Embedded JSON-Encoded Strings?

Menyahkod JSON dengan Rentetan Dikodkan JSON Terbenam

Dalam konteks menghuraikan respons JSON yang kompleks daripada API luaran, masalah timbul disebabkan kepada kehadiran rentetan berkod JSON dalam objek JSON. Struktur JSON mengandungi medan yang dipanggil "teks" yang termasuk rentetan HTML. Apabila cuba menyahkod JSON ini menggunakan jenis tersuai, ralat akan berlaku.

Untuk menangani isu ini, proses penyahkodan dua langkah diperlukan:

  1. Hilang struktur JSON utama menjadi jenis ringkas yang termasuk medan "args" sebagai kepingan rentetan.
  2. Nyahkod setiap rentetan dalam kepingan "args" sebagai objek JSON baharu menggunakan jenis tersuai yang memuatkan medan "teks".
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"`
}

Contoh penyahkodan rentetan JSON yang disediakan:

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), &amp;m); err != nil {
    log.Fatal(err)
}

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

Dengan mengasingkan penyahkodan objek JSON luar dan rentetan JSON terbenam, ia menjadi mungkin untuk mengendalikan struktur JSON bersarang dengan betul, menyelesaikan aksara tidak sah ralat.

Atas ialah kandungan terperinci Bagaimana untuk Menyahkod JSON dengan Rentetan Dikodkan JSON Terbenam?. 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