处理 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中文网其他相关文章!