Eu tenho um código de trabalho serializando / desserializando dados usando o Moshi 1.8.0
A atualização para 1.9.1 agora leva a uma falha ao tentar serializar:
java.lang.IllegalArgumentException: Não é possível serializar o tipo Kotlin com.xxx.Spot. A serialização reflexiva das classes Kotlin sem usar o kotlin-reflect possui um comportamento indefinido e inesperado. Use KotlinJsonAdapter do artefato moshi-kotlin ou use gen do código do artefato moshi-kotlin-codegen.
Aqui está o código do serializador:
val moshi = Moshi.Builder().build()
val dataListType = newParameterizedType(List::class.java, T::class.java)
val adapter: JsonAdapter<List<T>> = moshi.adapter(dataListType)
val json = adapter.toJson(dataList)
e a classe T correspondente é
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
Eu sou totalmente ignorante sobre o que fazer aqui.
Obrigado pela ajuda!
Respostas:
Você precisa adicionar @JsonClass (generateAdapter = true) antes da sua classe de dados
fonte
Você pode suprimir curingas usando
@JvmSuppressWildcards
.como isso
fonte