Android 使用通用消息包装器的kotlinx序列化

Android 使用通用消息包装器的kotlinx序列化,android,kotlin,gson,ktor,kotlinx.serialization,Android,Kotlin,Gson,Ktor,Kotlinx.serialization,所以我有一节课: @Serializable 密封类消息{ @可序列化 类成功(val值:T):消息() @可序列化 类错误(val errorMessage:String):Message() } 我希望将其用于从服务器发送到客户端的每条消息。我已经不得不更改以下函数,因为我不知道如何将序列化与泛型一起使用 post(“创建”){ val userName=call.receive() if(userName.isBlank()){ call.respond(Message.Error(“指

所以我有一节课:

@Serializable
密封类消息{
@可序列化
类成功(val值:T):消息()
@可序列化
类错误(val errorMessage:String):Message()
}
我希望将其用于从服务器发送到客户端的每条消息。我已经不得不更改以下函数,因为我不知道如何将序列化与泛型一起使用

post(“创建”){
val userName=call.receive()
if(userName.isBlank()){
call.respond(Message.Error(“指定用户名”))
}否则{
call.respond(Message.Success(用户(用户名)))
}
}

post(“创建”){
val userName=call.receive()
if(userName.isBlank()){
val serializer=Message.Error.serializer(User.serializer())
val response=Message.Error(“指定用户名”)
val responseString=stringify(序列化程序,响应)
呼叫。应答(应答)
}否则{
val serializer=Message.Success.serializer(User.serializer())
val响应=Message.Success(用户(用户名))
val responseString=stringify(序列化程序,响应)
呼叫。应答(应答)
}
}
但是现在我的客户端抛出了这个错误:
java.lang.RuntimeException:调用private com.kvw.letsgo.common.Message()失败,没有参数


如何将泛型正确地用于序列化?

为了更明确地说明响应,请您提及您使用的网络通信框架好吗?我将ktor与kotlinx serialization服务器端一起使用,并在客户端使用gson(我仍然可以更改)进行改进,以便更明确地说明响应,请您提一下您在网络通信中使用的框架好吗?我在kotlinx序列化服务器端使用ktor,在客户端使用gson(我仍然可以更改)