首頁 > 後端開發 > Golang > 如何在 Go 中解碼嵌套的 JSON 編碼字串?

如何在 Go 中解碼嵌套的 JSON 編碼字串?

Susan Sarandon
發布: 2024-12-05 08:12:13
原創
426 人瀏覽過

How to Decode Nested JSON-Encoded Strings in Go?

使用巢狀編碼字串解碼JSON

在提供的場景中,WebSocket 資訊以包含巢狀JSON 的JSON 回應的形式接收- 編碼字串。目標是將此 JSON 解碼為自訂 Go 資料結構。

由於嵌套 JSON 字串的「文字」欄位中的無效字符,最初的解碼嘗試失敗。這是因為該值包含 HTML 標記,這不是有效的 JSON 語法。

兩步驟解碼

要解決此問題,需要完成解碼過程分兩步驟:

  1. 將外部JSON 回應解碼為包含“args”字串切片的資料結構欄位。
  2. 循環「args」切片並將每個單獨的字串解碼為 JSON。

程式碼範例

這是更新的程式碼實作此兩步驟解碼過程的程式碼片段:

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

此程式碼示範了嵌套解碼處理,允許應用程式從包含編碼字串的JSON 回應中提取所需的資料。

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

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