2015-11-02 149 views
1

我已經得到了JSON模型模式(這是Wikia的API):的Android - GSON fromJson返回null

{ 
    "HubInfo": [ 
    { 
     "id": "integer", 
     "name": "string", 
     "url": "string", 
     "language": "string" 
    } 
    ] 
} 

這是下載JSON的結果:

{ 
    "list": { 
    "84": { 
     "id": 84, 
     "name": "Music Hub", 
     "url": "http://musichub.wikia.com/", 
     "language": "en" 
    }, 
    "646052": { 
     "id": 646052, 
     "name": "Books Hub", 
     "url": "http://bookshub.wikia.com/", 
     "language": "en" 
    }, 
    "952281": { 
     "id": 952281, 
     "name": "Lifestyle Hub", 
     "url": "http://lifestylehub.wikia.com/", 
     "language": "en" 
    }, 
    "952442": { 
     "id": 952442, 
     "name": "Movies Hub", 
     "url": "http://movieshub.wikia.com/", 
     "language": "en" 
    }, 
    "952445": { 
     "id": 952445, 
     "name": "Comics Hub", 
     "url": "http://comicshub.wikia.com/", 
     "language": "en" 
    }, 
    "955764": { 
     "id": 955764, 
     "name": "Games Hub ", 
     "url": "http://gameshub.wikia.com/", 
     "language": "en" 
    }, 
    "957447": { 
     "id": 957447, 
     "name": "TV Hub ", 
     "url": "http://tvhub.wikia.com/", 
     "language": "en" 
    }, 
    "1114909": { 
     "id": 1114909, 
     "name": "Huddler Hub", 
     "url": "http://huddlerhub.wikia.com/", 
     "language": "en" 
    }, 
    "1162644": { 
     "id": 1162644, 
     "name": "Rupertproducttest Wikia", 
     "url": "http://rupertproducttest.wikia.com/", 
     "language": "en" 
    } 
    } 
} 

這是我的POJO :

public final class Test { 
    public final HubInfo hubInfo[]; 

    public Test(HubInfo[] hubInfo){ 
     this.hubInfo = hubInfo; 
    } 

    public static final class HubInfo { 
     public final String id; 
     public final String name; 
     public final String url; 
     public final String language; 

     public HubInfo(String id, String name, String url, String language){ 
      this.id = id; 
      this.name = name; 
      this.url = url; 
      this.language = language; 
     } 
    } 
} 

當我跑步時這樣的:

Test test = gson.fromJson(json, Test.class); 

HubInfo裏面的測試對象爲空。我究竟做錯了什麼? 我使用Volley來下載JSON。

+1

領域'id'是一個整數 - 你將它設置爲一個字符串。 – yennsarah

+0

我改變了這一點,仍然收到零... –

回答

1

正如您在JSON中看到的,實際上它不是一個列表,而是一本字典。所以GSON不能真正將其映射到列表而不會丟失信息。

如果您改變hubInfo對象的類型,該類型:

@SerializedName("list") 
Map<String, HubInfo> hubInfo; 

,改變它的構造函數,它應該是工作。

然後你就可以得到一個值:

hubInfo.get("84"); 
+0

這就是我需要的!非常感謝你 :) –