Ich habe einen Arbeitscode zum Serialisieren / Deserialisieren von Daten mit Moshi 1.8.0
Ein Upgrade auf 1.9.1 führt jetzt zu einem Absturz beim Versuch der Serialisierung:
java.lang.IllegalArgumentException: Kotlin-Typ com.xxx.Spot kann nicht serialisiert werden. Die reflektierende Serialisierung von Kotlin-Klassen ohne Verwendung von Kotlin-Reflect hat ein undefiniertes und unerwartetes Verhalten. Bitte verwenden Sie KotlinJsonAdapter aus dem Moshi-Kotlin-Artefakt oder Code Gen aus dem Moshi-Kotlin-Codegen-Artefakt.
Hier ist der Serializer-Code:
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)
und die entsprechende T-Klasse ist
@IgnoreExtraProperties
data class Spot(
var id: String = "",
var localizedName: String? = null,
var type: String = "",
var location: Location? = null
)
Ich habe keine Ahnung, was ich hier tun soll.
Danke für die Hilfe!
Antworten:
Sie müssen @JsonClass (generateAdapter = true) vor Ihrer Datenklasse hinzufügen
quelle
Sie können Platzhalter mit unterdrücken
@JvmSuppressWildcards
.so was
quelle