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

如何將具有未知欄位名稱的 JSON 解組到 Go 結構中?

Susan Sarandon
發布: 2024-12-17 11:45:25
原創
327 人瀏覽過

How to Unmarshal JSON with Unknown Field Names into a Go Struct?

將具有未知欄位名稱的 JSON 解組到結構

當 JSON 回應包含具有未知或動態名稱的欄位時,就會出現這種情況。為了解決這個問題,我們可以利用映射和結構體的組合來捕獲資料。

修改後的程式碼:

package main

import "fmt"
import "encoding/json"

var body = []byte(`{
    "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]]
        }
}`)

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

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

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

解釋:

  • 我們定義一個表示中的已知字段JSON。
  • 我們建立一個地圖數據,其中鍵是未知的欄位名稱,值是 mData 的實例。
  • 在解組過程中,json.Unmarshal 將 JSON 資料指派給中對應的欄位是基於欄位名稱的 mData。
  • 資料對映的鍵是來自JSON.

輸出:

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

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

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