Golang struct para json con claves arbitrarias

Estoy tratando de escribir un tipo de estructura que pueda manejar una respuesta json como esta

{"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
    }]
  }
}

Ya que las claves no son las mismas cada vez ... una respuesta diferente puede tener más o menos claves, diferentes y, como puede ver, con el 50x100 devuelve múltiples imágenes para un tamaño particular, ¿cómo puedo crear una estructura que coincida con esto?

Puedo hacer como

type ImageURL struct {
    Url string
    Width, Height int
}

para un elemento individual, y una lista de ellos para una clave en particular. Pero, ¿cómo se ve la estructura contenedora?

Algo como:

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

Puede funcionar, pero no puedo enumerar todas las posibles respuestas de tamaño de imagen. Además, ese Image_Urls al final no es realmente una lista. Me gustaría poder descargarlo directamente en json.Unmarshal si es posible.

Respuestas a la pregunta(1)

Su respuesta a la pregunta