Sie müssen einen benutzerdefinierten Deserializer schreiben, ihn dann schleifen und die Werte der Hashmap abrufen.
Benutzerdefinierter Deserializer: -
public class UserDetailsDeserializer implements JsonDeserializer<AllUserDetailsKeyModel> {
@Override public AllUserDetailsKeyModel deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = json.getAsJsonObject();
Gson gson = new Gson();
Type AllUserDetailsResponseModel =
new TypeToken<HashMap<String, AllUserDetailsResponseModel>>(){}.getType();
HashMap<String, AllUserDetailsResponseModel> user =
gson.fromJson(jsonObject, AllUserDetailsResponseModel);
AllUserDetailsKeyModel result = new AllUserDetailsKeyModel();
result.setResult(user);
return result;
}
}
Der Code in den Kommentaren ist mein Objektmodell und Sie sollten AllUserDetailsKeyModel durch Ihre Modellklasse ersetzen und diesen wie folgt zum Restclient hinzufügen: -
private Converter.Factory createGsonConverter() {
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(AllUserDetailsKeyModel.class, new UserDetailsDeserializer());
Gson gson = gsonBuilder.create();
return GsonConverterFactory.create(gson);
}
Dies ist der benutzerdefinierte Konverter für die Nachrüstung.
In Ihrer onResponse-Schleife führen Sie einfach eine Schleife mit Hashmaps durch und erhalten den Wert per Schlüssel. Meine Modellklasse sieht wie folgt aus: -
public class AllUserDetailsKeyModel {
private Map<String, AllUserDetailsResponseModel> result;
public Map<String, AllUserDetailsResponseModel> getResult() {
return result;
}
public void setResult(Map<String, AllUserDetailsResponseModel> result) {
this.result = result;
}
}
Wahrscheinlich müssen Sie einen Typ T angeben, wobei T Ihr Datentyp ist und mein Modell nur aus einer Hashmap und Getter und Setter dafür besteht.
Und schließlich stellen Sie Custom Convertor wie folgt auf Nachrüstung ein: - .addConverterFactory(createGsonConverter())
Lassen Sie mich wissen, wenn Sie weitere Erläuterungen benötigen.