Avatar ·

Cómo usar TypeToken con genéricos en Gson en Kotlin (solución del error com.google.gson.internal.LinkedTreeMap)

¡Hola a todos! Llevo varios días lidiando con el problema de deserialización JSON en Kotlin cuando se usan genéricos. Tengo una función que recibe el tipo de clase y devuelve un objeto parseado. En Java escribiría algo como `new TypeToken>(){}.getType()`, pero en Kotlin esto no funciona debido a los genéricos borrados. Aquí hay un ejemplo simplificado: ```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) } // Uso val json = """[{"name":"John","age":30}]""" val users = parseList(json, User::class.java) println(users[0].name) // Error: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User ``` He probado muchas variantes: intenté pasar `TypeToken`, usar `reified`, pero aún así obtengo `LinkedTreeMap` en lugar de mi tipo. Entiendo que esto es con