Avatar ·

So verwenden Sie TypeToken mit Generics in Gson in Kotlin (Lösung des Fehlers com.google.gson.internal.LinkedTreeMap)

Hallo zusammen! Ich kämpfe seit einigen Tagen mit dem Problem der Deserialisierung von JSON in Kotlin, wenn Generics verwendet werden. Ich habe eine Funktion, die einen Klassentyp akzeptiert und ein geparstes Objekt zurückgibt. In Java würde ich so etwas wie `new TypeToken>(){}.getType()` schreiben, aber in Kotlin funktioniert das aufgrund von erased generics nicht. Hier ist ein vereinfachtes Beispiel: ```kotlin data class User(val name: String, val age: Int) fun parseList(json: String, clazz: Class): List { val type = TypeToken.getParameterized(List::class.java, clazz).type return Gson().fromJson(json, type) } // Verwendung val json = """[{"name":"John","age":30}]""" val users = parseList(json, User::class.java) println(users[0].name) // Fehler: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User ``` Ich habe viele Varianten ausprobiert: versucht, `TypeToken` zu übergeben, `reified` zu verwenden, aber ich bekomme immer noch `LinkedTreeMap` anstelle meines Typs. Ich verstehe, dass dies mit