Tengo un código de trabajo que serializa / deserializa datos usando Moshi 1.8.0
La actualización a 1.9.1 ahora conduce a un bloqueo al intentar serializar:
java.lang.IllegalArgumentException: no se puede serializar el tipo Kotlin com.xxx.Spot. La serialización reflexiva de las clases de Kotlin sin usar kotlin-reflect tiene un comportamiento indefinido e inesperado. Utilice KotlinJsonAdapter del artefacto moshi-kotlin o use code gen del artefacto moshi-kotlin-codegen.
Aquí está el código de 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)
y la clase T correspondiente es
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
No tengo ni idea de qué hacer aquí.
¡Gracias por la ayuda!
Respuestas:
Debe agregar @JsonClass (generateAdapter = true) antes de su clase de datos
fuente
Puede suprimir los comodines usando
@JvmSuppressWildcards
.Me gusta esto
fuente