janvladimirmostert
04/29/2023, 3:09 PM@Serializable
class Blah1()
inline fun <reified T : Blah1> blah(input: String){
Json.decodeFromString<T>(input)
}
Usecase: I want to do something like this and get rid of from / to json boilerplate
fun <REQ, RES> doSomething(input: String, handler: REQ.() -> RES): String {
val req = Json.decodeFromString<REQ>(input)
val res = handler.invoke(req)
return Json.encodeToString<RES>(res)
}
REQ needs te be deserializable and RES should be serializablejanvladimirmostert
04/29/2023, 3:20 PMinline fun <reified REQ : Serializable, reified RES : Serializable> doSomething(input: String, handler: REQ.() -> RES): String {
val req = Json.decodeFromString<REQ>(input)
val res = handler.invoke(req)
return Json.encodeToString<RES>(res)
}
let's see if it works ...Emil Kantis
04/29/2023, 3:38 PMreified T
and then there’s a serializerFor(type :KType)
or something like itEmil Kantis
04/29/2023, 3:39 PMSerializable
as type constraint afaik, since it’s an annotationjanvladimirmostert
04/29/2023, 3:51 PMinline fun <reified REQ, reified RES> doSomething(input: String, crossinline handler: (REQ) -> RES): String {
val req = Json.decodeFromString<REQ>(input)
val res = handler.invoke(req)
return Json.encodeToString<RES>(res)
}
ephemient
04/29/2023, 4:16 PMjanvladimirmostert
04/29/2023, 4:17 PM