小编典典

带有任意键的json的golang结构

go

我正在尝试编写一个可以处理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
    }]
  }
}

由于键每次都不相同…不同的响应可能包含或多或少的键,不同的键,如您所见,使用50x100返回特定大小的多个图像,我如何创建与此匹配的结构?

我可以这样:

type ImageURL struct {
    Url string
    Width, Height int
}

用于单个项目,以及用于特定键的列表。但是包含的结构看起来如何?

就像是:

type Images struct {
    50x100 []ImageURL
    ...
}
type Items struct {
    name string
    Image_Urls []Images
}

可能有效,但我无法列举所有可能的图像尺寸响应。另外,Image_Urls末尾没有真正的列表。我希望能够将其直接转储到json.Unmarshal中(如果可能)。


阅读 265

收藏
2020-07-02

共1个答案

小编典典

您的json看起来更像是我的地图。

type Items map[string][]ImageUrl

应该做你想做的。

2020-07-02