Moshi: ожидается класс, ParameterizedType или GenericArrayType, но <null> имеет тип null

У меня есть эта модель:

class Model1 { <... other fields here ...> var attributes: Map<String, Any>? = null <... other fields here ...> } 

Я ожидаю список этих моделей.

Пример JSON:

 [ { "attributes": { "title": "New Year's Day", "country": "SG" } }, { "attributes": { "staff_id": 320011, "title": "Labor day", "date_joined": "2017-01-10 00:00:00", "years": 1 } } ] 

Затем я получаю эту ошибку во время десериализации:

 Caused by: java.lang.IllegalArgumentException: Expected a Class, ParameterizedType, or GenericArrayType, but <null> is of type null at com.squareup.moshi.Types.getRawType(Types.java:165) at com.squareup.moshi.ClassJsonAdapter$1.createFieldBindings(ClassJsonAdapter.java:82) at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:74) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.moshi.Moshi.adapter(Moshi.java:57) at com.squareup.moshi.MapJsonAdapter.<init>(MapJsonAdapter.java:46) at com.squareup.moshi.MapJsonAdapter$1.create(MapJsonAdapter.java:37) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.moshi.ClassJsonAdapter$1.createFieldBindings(ClassJsonAdapter.java:90) at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:74) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.moshi.Moshi.adapter(Moshi.java:57) at com.squareup.moshi.CollectionJsonAdapter.newArrayListAdapter(CollectionJsonAdapter.java:51) at com.squareup.moshi.CollectionJsonAdapter$1.create(CollectionJsonAdapter.java:35) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at com.squareup.moshi.ClassJsonAdapter$1.createFieldBindings(ClassJsonAdapter.java:90) at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:74) at com.squareup.moshi.Moshi.adapter(Moshi.java:99) at retrofit2.converter.moshi.MoshiConverterFactory.responseBodyConverter(MoshiConverterFactory.java:91) at retrofit2.Retrofit.nextResponseBodyConverter(Retrofit.java:330) at retrofit2.Retrofit.responseBodyConverter(Retrofit.java:313) at retrofit2.ServiceMethod$Builder.createResponseConverter(ServiceMethod.java:736) ... 65 more 

Мне нужно, чтобы атрибут поля был картой. Данные внутри могут быть любого типа и любого значения

Вы хотите @JvmSuppressWildcards в параметрах карты. https://github.com/square/moshi/issues/410#issuecomment-351131524

Надеемся, что в следующей версии Moshi появится более качественное сообщение об ошибке.

Просто нужно сделать это:

 class Model1 { <... other fields here ...> @JvmSuppressWildcards var attributes: Map<String, Any>? = null <... other fields here ...> } 

https://github.com/square/moshi/issues/410#issuecomment-351131524

Intereting Posts
Можно ли использовать метод данных equals () класса Kotlin без дальнейшей модификации в сочетании с JPA? NoClassDefFoundError во время выполнения Android Kotlin Dagger2 предоставляет gson: Параметр, указанный как непустой, равен null Аннотации Android с инструментами Kotlin и build 2.3.0 Доступ к объекту класса Kotlin из Java Moshi: ожидается класс, ParameterizedType или GenericArrayType, но <null> имеет тип null Как динамически масштабировать отскок потока эмиссионных выбросов? java.lang.NoClassDefFoundError: kotlin / jvm / internal / Intrinsics в libgdx Что произошло при запуске кода HashMap (it)? Почему не переупорядочивает код в файлах Kotlin в Intellij? Возможно ли издеваться над аксессуарами от Mockito в Котлине? Как вернуть интерфейс, например, javawith Kotlin Single.defer () не выполнен Retrofit2 + SimpleXML в Kotlin: MethodException: аннотация должна отмечать набор или метод get Какова наиболее вероятная причина исключений, загадочно избегающих блока try-catch в этом случае?