can i not serialize `object`s ? it seems to not wo...
# serialization
n
can i not serialize `object`s ? it seems to not work in Polymorphic code in 🧵
Copy code
@Polymorphic
@Serializable(PolymorphicSerializer::class)
sealed class LoginResponse {
    interface Failure
    
    @Serializable
    data class Success(
       val message: String
    ) : LoginResponse()
    
    @Serializable
    object IncorrectPassword: Failure, LoginResponse()

    companion object {
        fun install(builder: SerializersModuleBuilder) {
            builder.polymorphic<LoginResponse> {
                Success::class with Success.serializer()
                IncorrectPassword::class with IncorrectPassword.serializer()
            }
        }
    }
}
d
What's the error?
n
Copy code
@Serializable annotation is ignored because it is impossible to serialize automatically interfaces or enums. Provide serializer manually via e.g. companion object
i am now trying..
Copy code
@Serializer(forClass = IncorrectPassword::class)
    object IncorrectPassword: LoginResponse(), Failure {
        override val descriptor: SerialDescriptor = SerialClassDescImpl("IncorrectPassword")
        override fun deserialize(decoder: Decoder): IncorrectPassword {
            return IncorrectPassword
        }
        override fun serialize(encoder: Encoder, obj: IncorrectPassword) {
            val composite = encoder.beginStructure(descriptor)
            composite.endStructure(descriptor)
        }
    }
this seems to work.. so i guess i can make some sort of generic serializer for this
f
I wouldn't do
obj::class.simpleName!!
I think that depends on kotlin reflect to work?