Есть ли способ обработать динамические аннотации SerialName для Kotlin Serializer?Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Есть ли способ обработать динамические аннотации SerialName для Kotlin Serializer?

Сообщение Anonymous »

У меня есть проблема, которую меняет имя моего поля в зависимости от моего ответа от других элементов. В сериализации 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»