fbodr
06/30/2022, 12:28 PMhfhbd
06/30/2022, 2:27 PMfbodr
06/30/2022, 2:29 PMAleksei Tirman [JB]
06/30/2022, 3:21 PMimport io.ktor.serialization.kotlinx.json.*
import io.ktor.server.application.*
import io.ktor.server.engine.*
import io.ktor.server.netty.*
import io.ktor.server.plugins.contentnegotiation.*
import io.ktor.server.request.*
import io.ktor.server.response.*
import io.ktor.server.routing.*
import kotlinx.serialization.KSerializer
import kotlinx.serialization.descriptors.PrimitiveKind
import kotlinx.serialization.descriptors.PrimitiveSerialDescriptor
import kotlinx.serialization.descriptors.SerialDescriptor
import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.Json
import kotlinx.serialization.modules.SerializersModule
fun main() {
embeddedServer(Netty, port = 5555) {
install(ContentNegotiation) {
json(Json {
serializersModule = SerializersModule {
contextual(MyClass::class, MyClassSerializer)
}
})
}
routing {
post("/") {
val x = call.receive<MyClass>()
println(x)
call.respondText { "OK" }
}
}
}.start(true)
}
class MyClass
object MyClassSerializer: KSerializer<MyClass> {
override val descriptor: SerialDescriptor
get() = PrimitiveSerialDescriptor("MyClass", PrimitiveKind.STRING)
override fun deserialize(decoder: Decoder): MyClass {
return MyClass()
}
override fun serialize(encoder: Encoder, value: MyClass) {
encoder.encodeString("MyClass")
}
}
hfhbd
06/30/2022, 7:42 PMhfhbd
07/04/2022, 7:41 AM