Я использую kotlinx.serialization
и implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.5.0")
с Retrofit2
Возможно, я упускаю что-то очевидное, но я просто не соединяю 2 и 2 на этом.
У меня есть Сериализуемый класс, у которого есть список другого сериализуемого класса:
@Serializable
data class A(
val resultCount: Int,
val results: List<B>
)
@Serializable
data class B(
val x: Int,
val y: Int,
val z: Int
)
И установка для модификации, подобная этой:
fun provideRetrofit(): Retrofit {
val contentType = MediaType.get("application/json")
return Retrofit.Builder()
.baseUrl(BaseUrl)
.addConverterFactory(Json.asConverterFactory(contentType))
.build()
}
У меня есть служба:
@GET("search/")
suspend fun GetStuff(): A
Когда Я делаю сетевой вызов GetStuff
, ожидая получения экземпляра A
, получаю следующее исключение: kotlinx.serialization.SerializationException: Can't locate argument-less serializer for class A. For generic classes, such as lists, please provide serializer explicitly.
Итак, я предполагаю, что я ожидаю, что я предоставлю сериализатор для списка?
Я прочитал Я должен быть в состоянии использовать сериализатор списка, например B.serializer().list
, но я не уверен, где это использовать в моем контексте, и когда я пытаюсь поместить его в любое место, я получаю Unresolved reference: serializer
.