Merkwürdiges Verhalten beim Deserialisieren verschachtelter generischer Klassen mit GSON

Ich schreibe eine Klasse, die eine Verbindung zu einem Server herstellt und basierend auf einigen Argumenten eine JSON-Zeichenfolge abruft, die mit GSON in die angegebene Klasse (über Generika) analysiert wird.

Eine abgespeckte Version der verantwortlichen Klasse sieht folgendermaßen aus:

class Executor<T> {

    private Response<T> response;

    public void execute() {
        Type responseType = new TypeToken<Response<T>>() {}.getType();
        this.response = new Gson().fromJson(json, responseType);
    }

    public Response<T> getResponse() { return this.response; }

}

(dasJSON-Variablesieht aus wie das.)

Die Klasse, in der die Daten nach der De-Serialisierung gespeichert werden, sieht folgendermaßen aus:

class Response<T> {

    private List<T> data = null;

    public List<T> getData() { return this.data; }

}

Die Klasse, für die die Daten de-serialisiert werden sollen:

public class Language {
    public String alias;
    public String label;
}

Und der Code, der ausgeführt wird, verwendet die oben genannten Klassen:

Executor<Language> executor = new Executor<Language();
List<Language> languages = executor.execute().getResponse().getData();
System.out.println(languages.get(0).alias); // exception occurs here

Was zur folgenden Ausnahme führt

ClassCastException: com.google.gson.internal.StringMap kann nicht in sunnerberg.skolbibliotek.book.Language umgewandelt werden

Jede Hilfe oder Anregungen sind sehr dankbar!

Antworten auf die Frage(3)

Ihre Antwort auf die Frage