Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyahkod Rentetan JSON yang Mengandungi Rentetan Dikodkan JSON Bersarang?

Bagaimana untuk Menyahkod Rentetan JSON yang Mengandungi Rentetan Dikodkan JSON Bersarang?

Barbara Streisand
Barbara Streisandasal
2024-12-06 04:08:18324semak imbas

How to Decode a JSON String Containing Nested JSON-Encoded Strings?

Nyahkod JSON dengan Rentetan Dikodkan JSON yang Disertakan

Masalah

Apabila cuba menyahkod rentetan JSON yang mengandungi JSON bersarang objek, aplikasi menerima ralat: "aksara tidak sah 'h' selepas kekunci objek: nilai pasangan."

Penyelesaian

Ralat disebabkan oleh aksara yang tidak sah dalam nilai objek JSON bersarang. Untuk menyahkod JSON dengan betul, ia mesti dilakukan dalam dua langkah:

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"`
}

// Parse input JSON string
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)
}

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

Langkah pertama menyahkod objek JSON luar ke dalam struktur utama, yang mengandungi tatasusunan rentetan. Langkah kedua menggelung melalui tatasusunan dan menyahkod setiap rentetan sebagai objek JSON bersarang. Ini membolehkan aplikasi menghuraikan data JSON dengan betul dan mengelakkan ralat.

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