2013-04-04 48 views
10

我想寫能處理這樣golang結構的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 
    }] 
    } 
} 

JSON響應由於密鑰每次都是不一樣的結構類型......不同的反應可能有或多或少的鍵,不同的,和你可以看到與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中。

回答

11

你的json看起來更像是一張地圖給我。

type Items map[string][]ImageUrl 

應該做你想要什麼。

+0

哦,是的。當然!謝謝 – MichaelB 2013-04-04 18:55:48