2013-04-04 29 views
10

Sto cercando di scrivere un tipo struct in grado di gestire una risposta JSON come questogolang struct per JSON con le chiavi arbitrarie

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

Dal momento che le chiavi non sono la stessa cosa ogni volta ... una risposta diversa potrebbe avere più o meno tasti, diversi, e come puoi vedere con il 50x100 restituisci più immagini per una dimensione particolare come posso creare una struttura che corrisponda a questa?

posso fare come:

type ImageURL struct { 
    Url string 
    Width, Height int 
} 

per un singolo elemento, e un elenco di loro per un determinato tasto. Ma come appare la struttura contenente?

Qualcosa di simile:

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

potrebbe funzionare, ma non posso enumerare tutti i possibili risposte dimensioni dell'immagine. Anche che Image_Urls alla fine non c'è davvero una lista. Mi piacerebbe essere in grado di scaricarlo direttamente in json.Unmarshal se possibile.

risposta

11

Il tuo json sembra più una mappa per me.

type Items map[string][]ImageUrl 

dovrebbe fare quello che vuoi.

+0

Oh sì. Ovviamente! Grazie – MichaelB

Problemi correlati