2013-04-04 12 views
10

Ich versuche, einen Strukturtyp zu schreiben, die eine JSON-Antwort wie diesegolang Struktur für json mit beliebigen Schlüsseln

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

verarbeiten können Da die Schlüssel nicht jedes Mal das gleiche sind ... eine andere Antwort hat mehr oder weniger Schlüssel, andere, und wie Sie sehen können, mit der 50x100 mehrere Bilder für eine bestimmte Größe zurückgeben, wie kann ich eine Struktur, die das entspricht?

Ich kann wie tun:

type ImageURL struct { 
    Url string 
    Width, Height int 
} 

für ein einzelnes Element und eine Liste von ihnen für einen bestimmten Schlüssel. Aber wie sieht die enthaltende Struktur aus?

Etwas wie:

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

funktionieren könnte, aber ich kann alle möglichen Bildgröße Antworten nicht aufzuzählen. Auch dass Image_Urls am Ende nicht wirklich eine Liste ist. Ich würde gerne in der Lage sein, es direkt in json.Unmarshal zu entleeren, wenn möglich.

Antwort

11

Ihr JSON sieht für mich eher wie eine Karte aus.

type Items map[string][]ImageUrl 

sollte tun, was Sie wollen.

+0

Oh ja. Na sicher! Vielen Dank – MichaelB

Verwandte Themen