首頁 > 後端開發 > Golang > 如何在 Go 中解析具有嵌套動態結構的 JSON 資料?

如何在 Go 中解析具有嵌套動態結構的 JSON 資料?

Patricia Arquette
發布: 2024-11-19 16:25:02
原創
235 人瀏覽過

How to Parse JSON Data with Nested Dynamic Structures in Go?

JSON 嵌套動態結構的Go 解碼

本討論探討了在Go 中解析具有嵌套動態結構的JSON 資料的挑戰。

問題:

範例JSON 資料包含具有動態鍵的巢狀結構,例如電話號碼,如下所示:

{
    "status": "OK",
    "status_code": 100,
    "sms": {
        "79607891234": {
            "status": "ERROR",
            "status_code": 203,
            "status_text": "Нет текста сообщения"
        },
        "79035671233": {...},
        "79105432212": {...}
    },
    "balance": 2676.18
}
登入後複製

提供的範例程式碼嘗試使用固定的電話號碼清單來建模嵌套結構,但由於電話號碼鍵的動態性質,這種方法失敗。

解決方案:

為了處理嵌套的動態結構,應該使用映射而不是固定列表來對資料進行建模。對於此範例,可以使用以下資料結構:

type SMSPhone struct {
    Status     string `json:"status"`
    StatusCode int    `json:"status_code"`
    StatusText string `json:"status_text"`
}

type SMSSendJSON struct {
    Status     string              `json:"status"`
    StatusCode int                 `json:"status_code"`
    Sms        map[string]SMSPhone `json:"sms"`
    Balance    float64             `json:"balance"`
}
登入後複製

在此更新的結構中,map[string]SMSPhone 用於表示嵌套的「sms」對象,其中映射鍵對應於動態電話號碼。

要將JSON 資料解組到這些結構中,可以使用以下程式碼:

var result SMSSendJSON

if err := json.Unmarshal([]byte(src), &result); err != nil {
    panic(err)
}
fmt.Printf("%+v", result)
登入後複製

結果將是一個Go 結構體,其中包含包含嵌套動態電話號碼的映射data .

展示Go 中動態結構映射的使用的相關問題包括:

  • 如何在Golang 中解析/反序列化動態JSON
  • 如何解組具有未知字段名的JSON 要在golang 中構造?
  • 解組具有未知欄位的 JSON
  • 將 json 字串解組到具有結構本身一個元素的結構

以上是如何在 Go 中解析具有嵌套動態結構的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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