2015-06-16 129 views
1

我使用的是改造與GSON我的Android應用程序,我有兩個類:GSON Deserilize地圖<字符串,列表<SomeType>>

SomeClass1{ 

private Map<String, String> someMap; 
private String otherProperty1; 
private String otherProperty2; 

} 


SomeClass2{ 

    private Map<String, Object> someMap; 
    private String otherProperty; 
} 

我JsonDeserializer爲<Map<String, Object>>

@Override 
    public Map<String, Object> deserialize(JsonElement json, Type typeOfT, 
      JsonDeserializationContext context) throws JsonParseException { 

     Gson gson = new Gson(); 
     JsonObject jsonObject = json.getAsJsonObject();  

     Map<String, Object> result = new HashMap<String, Object>(); 

     Iterable<Entry<String,JsonElement>> entries = jsonObject.entrySet(); 
     for (Entry<String, JsonElement> entry : entries) { 
      result.put(entry.getKey(), gson.fromJson(entry.getValue(), Object.class)); 
     } 

     return result;  
    } 

的問題是:

當我從json獲得SomeClass2對象時,其中someMap包含<String, SomeClass1>,它工作的很完美,但如果someMap包含<String, List<SomeClass1>>它給了我一個LinkedMapTree數組而不是Array of SomeClass1。我怎樣才能達到這個結果?

+0

如果改造映射到一切「對象」對我來說,我會流淚。 Rest API真的沒有定義? – EpicPandaForce

+0

您可以指定預期類型,並使用gson工作 – Dadroid

回答

0

試試這個:

result.put(entry.getKey(), gson.fromJson(entry.getValue(), List.class)); 
相關問題