首頁 > 後端開發 > Golang > 如何解碼包含 JSON 編碼字串的 JSON 資料?

如何解碼包含 JSON 編碼字串的 JSON 資料?

Mary-Kate Olsen
發布: 2024-12-03 09:46:11
原創
822 人瀏覽過

How to Decode JSON Data Containing JSON-Encoded Strings?

解碼包含 JSON 編碼字串的 JSON

從外部來源接收 JSON 資料時,經常會遇到包含編碼 JSON 字串的 JSON。處理這種情況需要兩步驟解碼過程。

考慮以下 JSON:

{"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}}"]}
登入後複製

為了正確解碼,我們定義以下結構:

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"`
}
登入後複製

第一步,解碼最外層:

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

接下來,我們解碼JSON編碼的字串在「args」陣列中:

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

使用這種兩步方法可確保應用程式正確解析最外層的JSON 和嵌入的JSON 字串。

以上是如何解碼包含 JSON 編碼字串的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板