Gson не может десериализовать общий тип ArrayList, используя TypeToken

У меня есть модель для Gson с этой структурой:

data class ApiResponse(val isError: String, val errorMessage: String, data: T) 

Поле data является общим типом. Когда я пытаюсь проанализировать ответы API, он работает во всех случаях, кроме тех, где тип данных является ArrayList.

Я десериализую JSON следующим образом:

 val typeToken = object : TypeToken<SprucedApiResponse< T>>() {}.type Gson().fromJson<SprucedApiResponse<T>>(jsonResponseString, typeToken) 

Если общий тип T является обычным объектом, он работает правильно. Однако, если T является ArrayList, тогда я получаю эту ошибку:

 com.google.gson.internal.LinkedTreeMap cannot be cast to CustomObject 

Я пытался использовать @JvmSuppressWildcards но это не решает проблему.

Эта проблема, безусловно, связана с дженериками, поскольку Gson может анализировать этот не общий шаблон ArrayList на основе TypeToken:

 val typeToken = object : TypeToken<SprucedApiResponse<ArrayList<CustomClass>>>() {}.type 

Следовательно, эта проблема, похоже, влияет только на типичные типы ArrayList.

Кто-нибудь знает, как решить эту проблему, не прибегая к синтаксическому анализу TypeToken из метода?

Заранее спасибо.

Intereting Posts
Обновление Kotlin от 1.0.2 до 1.0.3: java.lang.NoSuchMethodError: виртуальный метод не предоставленInjectedData $ app_compileDebugKotlin () как создать массив повторяющихся объектов в котлин? Является ли формат данных, хранящихся в kotlin.MetaData документированы где угодно? Невозможно разобрать json, используя Jackson в Kotlin Kolin – Список элементов к списку списков Почему компилятор Kotlin требует явного инициализатора свойства var? Kotlin – Понимание Getters и Setters Конструктор по умолчанию для IntentService (kotlin) Ввод / вывод дженериков для абстрактного контейнерного инструмента в Котлине? RxKotlin – Динамический массив наблюдателей В библиотеке Injekt для Kotlin, как мне создать локальные области, например, для каждой активности Android? Геттеры и сеттеры в Котлине Ошибка: не удается получить доступ к файлу класса KObject для kotlin.jvm.internal.KObject не найден Как я могу создать «статический» метод для перечисления в Котильне? Ярлык IntelliJ для конфигурации запуска