處理 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中文網其他相關文章!