Golang struct для json с произвольными ключами

Я пытаюсь написать тип структуры, который может обрабатывать 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, если это возможно.

Ответ 1

Ваш json больше похож на карту для меня.

type Items map[string][]ImageUrl

должен делать то, что вы хотите.