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。我怎樣才能達到這個結果?
如果改造映射到一切「對象」對我來說,我會流淚。 Rest API真的沒有定義? – EpicPandaForce
您可以指定預期類型,並使用gson工作 – Dadroid