首頁 > 後端開發 > Golang > 如何在 Go 中解組具有未知欄位名稱的 JSON?

如何在 Go 中解組具有未知欄位名稱的 JSON?

Linda Hamilton
發布: 2024-12-11 11:28:15
原創
349 人瀏覽過

How to Unmarshal JSON with Unknown Field Names in Go?

將具有未知字段名的JSON 解組到結構中

問題:

使用以下命令解組JSON 資料當JSON回應的結構一致但未知的欄位名稱可能具有挑戰性具體欄位名稱有所不同。

解決方案:

使用映射作為鍵值儲存可以處理具有未知欄位名稱的實例。映射的值應該是一個表示 JSON 資料通用結構的結構體。

範例:

假設下列 JSON 結構:

{
    "unknown_field": {
        "known_field_1": [[1,2,3,4,5],[10,20,30,40,50],[100,200,300,400,500]],
        "known_field_2": [[11,21,31,41,51]],
        "known_field_3": [[12,22,32,42,52],[14,44,34,44,54]]
    }
}
登入後複製

對應的Go結構:

type mData struct {
    KnownField1 [][5]int `json:"known_field_1"`
    KnownField2 [][5]int `json:"known_field_2"`
    KnownField3 [][5]int `json:"known_field_3"`
}
登入後複製

解組程式碼:

var data map[string]mData

if err := json.Unmarshal(body, &data); err != nil {
    panic(err)
}

fmt.Println(data)
for k, v := range data {
    fmt.Println(k, v)
}
登入後複製

輸出:

map[unknown_field:{[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}]
unknown_field {[[1 2 3 4 5] [10 20 30 40 50] [100 200 300 400 500]] [[11 21 31 41 51]] [[12 22 32 42 52] [14 44 34 44 54]]}
登入後複製

透過利用地圖,程式碼有效地處理未知的字段名,同時仍然準確地將資料提取到已知的結構中田野。

以上是如何在 Go 中解組具有未知欄位名稱的 JSON?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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