У меня есть проблема, которую меняет имя моего поля в зависимости от моего ответа от других элементов. В сериализации Kotlin я знаю, что мы можем сериализовать поля и тому подобное < /p>
@Serializable data class WeatherResponse (@SerialName("some_weather_id") val weatherData:WeatherData )
Однако в моем случае аннотация "some_weather_id" может измениться на основе предыдущих данных и ответов API. Это может быть "ore_weather_id" и т.д. , но я получаю ошибку
Поле «WeatherData» требуется для типа с серийным именем 'com.test.weatherresponse', но он отсутствовал на пути: $
Вот мой собственный сериализатор, если я делаю что -то неправильное < /p>
object SerialNameSerializer : KSerializer {
override val descriptor = PrimitiveSerialDescriptor("DynamicSerialName", PrimitiveKind.STRING)
override fun serialize(encoder: Encoder, value: String) {
val dynamicName = getWeatherID()
encoder.encodeStructure(descriptor){
encodeStringElement(descriptor, 0, dynamicName)
encodeStringElement(descriptor,1,value)
}
}
override fun deserialize(decoder: Decoder): String {
val dynamicName = getWeatherID()
decoder.decodeStructure(descriptor){
val name = decodeStringElement(descriptor,0)
if(name != dynamicName) {
throw SerializationException("Unexpected field name: $name")
}
return@decodeStructure decodeStringElement(descriptor, 1)
}
return dynamicName
}
private fun getWeatherID(): String {
return "some_weather_id"
}
}
Подробнее здесь: https://stackoverflow.com/questions/794 ... serializer
Есть ли способ обработать динамические аннотации SerialName для Kotlin Serializer? ⇐ Android
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Есть ли способ обработать динамические аннотации SerialName для Kotlin Serializer?
Anonymous » » в форуме Android - 0 Ответы
- 6 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Получить параметр SerialName из дочернего класса в сериализации Kotlin Kotlinx
Anonymous » » в форуме Android - 0 Ответы
- 17 Просмотры
-
Последнее сообщение Anonymous
-