首頁 >後端開發 >Golang >如何使用嵌入的 JSON 編碼字串解碼 JSON?

如何使用嵌入的 JSON 編碼字串解碼 JSON?

Linda Hamilton
Linda Hamilton原創
2024-12-16 09:59:11167瀏覽

How to Decode JSON with Embedded JSON-Encoded Strings?

使用嵌入式JSON 編碼字串解碼JSON

在解析來自外部API 的複雜JSON 回應時,會出現一個問題JSON 物件中是否存在JSON 編碼的字串。 JSON 結構包含一個名為「text」的字段,其中包含 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"`
}

解碼提供的JSON 字串的範例:

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)
}

透過分離外部JSON 物件和嵌入JSON 的解碼字串,可以正確處理巢狀的JSON結構,解決無效字元錯誤。

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn