Итак, у меня есть этот класс Item.kt
class Item {
val name = ""
val loc = ""
val price = 0.0
override fun toString() = "$name <$loc> $price"
}
Так как этот класс находится в другой библиотеке (я не могу редактировать его источник), у меня есть внешний Serializer для него.
ItemSerializer.kt
@Serializer(forClass = Item::class)
object ItemSerializer: KSerializer<Item> {
override fun serialize(output: Encoder, obj: Item) {
}
override fun deserialize(input: Decoder): Item {
return df.parse(input.decode())
}
}
Теперь самое сложное.Я могу использовать этот класс в другом классе, показанном ниже
Cart.kt
@Serializable
class Cart {
val id: Long? = null
@Serialize(with=ItemSerializer::class)
val item:Item = Item()
}
, но я не знаю, как использовать мой сериализатор, когда я использую список объектов item.например,
Cart.kt
@Serializable
class Cart {
val id: Long? = null
@Serialize(with=ItemSerializer::class) // doesn't work
val items = mutableListOf<Item>()
}
Как мне это сделать, используя сериализацию kotlinx?мне нужно написать совершенно новую библиотеку для сериализации списка и карты реализации Item
?