首页 > 后端开发 > Golang > 如何处理 Go 结构中的任意 JSON 键?

如何处理 Go 结构中的任意 JSON 键?

DDD
发布: 2024-11-26 16:04:10
原创
1001 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板