带有通用消息包装程序的kotlinx序列化

所以我有这节课:

@Serializable
sealed class Message<out T>{
    @Serializable
    class Success<out T>(val value: T) : Message<T>()
    @Serializable
    class Error<out T>(val errorMessage: String) : Message<T>()
}

我想使用从服务器发送到客户端的每条消息。我已经不得不更改以下功能,因为我无法弄清楚如何对泛型使用序列化

            post("create") {
                val username = call.receive<String>()
                if (username.isBlank()) {
                    call.respond(Message.Error<User>("Specify a username"))
                } else {
                    call.respond(Message.Success(User(username)))
                }
            }

            post("create") {
                val username = call.receive<String>()
                if (username.isBlank()) {
                    val serializer = Message.Error.serializer(User.serializer())
                    val response = Message.Error<User>("Specify a username")
                    val responseString = stringify(serializer,response)
                    call.respond(responseString)
                } else {
                    val serializer = Message.Success.serializer(User.serializer())
                    val response = Message.Success(User(username))
                    val responseString = stringify(serializer,response)
                    call.respond(responseString)
                }
            }

但是现在我的客户抛出了这个错误:java.lang.RuntimeException: Failed to invoke private com.kvw.letsgo.common.Message() with no args

如何在序列化中正确使用泛型?

nabela123 回答:带有通用消息包装程序的kotlinx序列化

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2669208.html

大家都在问