Avatar ·

كيفية استخدام TypeToken مع الأدوية العامة في Gson في Kotlin (حل خطأ com.google.gson.internal.LinkedTreeMap)

مرحباً بالجميع! لقد ظللت لعدة أيام أعاني من مشكلة إلغاء تسلسل JSON في Kotlin عند استخدام الأدوية العامة. لدي دالة تأخذ نوع الفئة وتعيد كائنًا محللاً. في Java، كنت سأكتب شيئًا مثل `new TypeToken>(){}.getType()`، لكن هذا لا يعمل في Kotlin بسبب محو الأدوية العامة. إليك مثال مبسط: ```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) } // الاستخدام val json = """[{"name":"John","age":30}]""" val users = parseList(json, User::class.java) println(users[0].name) // خطأ: java.lang.ClassCastException: com.google.gson.internal.LinkedTreeMap cannot be cast to User ``` لقد جربت العديد من الخيارات: حاولت تمرير `TypeToken`، واستخدام `reified`، لكنني ما زلت أحصل على `LinkedTreeMap` بدلاً من النوع الخاص بي. أفهم أن هذا