首頁 >後端開發 >Golang >如何處理 Go 結構中的任意 JSON 鍵?

如何處理 Go 結構中的任意 JSON 鍵?

DDD
DDD原創
2024-11-26 16:04:10967瀏覽

How to Handle Arbitrary JSON Keys in Go Structs?

處理 Go 結構中的任意 JSON 鍵

您的 JSON 回應包含無法在 Go 結構中靜態定義的不同鍵。為了解決這個問題,請考慮使用允許動態鍵值對的映射資料結構。

使用動態鍵的映射

以下程式碼定義了一個結構體使用映射來表示任意鍵值對:

type Items map[string][]ImageUrl

這裡, Items 是映射字串(中的鍵)的映射JSON)到ImageUrl 結構的切片。每個 ImageUrl 結構代表一個具有尺寸的圖像 URL。

範例用法

程式碼的此修改版本說明如何使用Items 結構:

type ImageUrl struct {
    Url string
    Width, Height int
}

type Items map[string][]ImageUrl

func main() {
    json := `{"items":
[{"name": "thing",
  "image_urls": {
    "50x100": [{
      "url": "http://site.com/images/1/50x100.jpg",
      "width": 50,
      "height": 100
    }, {
      "url": "http://site.com/images/2/50x100.jpg",
      "width": 50,
      "height": 100
    }],
    "200x300": [{
      "url": "http://site.com/images/1/200x300.jpg",
      "width": 200,
      "height": 300
    }],
    "400x520": [{
      "url": "http://site.com/images/1/400x520.jpg",
      "width": 400,
      "height": 520
    }]
  }
}
}`

    var items Items
    if err := json.Unmarshal([]byte(json), &items); err != nil {
        // Handle error
    }

    fmt.Println(items) // Prints the map containing the keys and values
}

在此範例中,json.Unmarshal 函數將自動使用適當的鍵值對填滿Items 映射。然後,您可以根據需要存取和操作資料。

注意:此方法假設 JSON 中的巢狀鍵是一致的。如果情況並非如此,您可能需要使用更複雜的資料結構,例如巢狀映射或映射切片。

以上是如何處理 Go 結構中的任意 JSON 鍵?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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