我正在尝试用 Kotlinx.serialization 替换默认的Javalin JSON 序列化程序 Jackson。
该文档显示了如何使用 GSON 序列化程序来完成。
不幸的是,kotlinx 序列化程序具有不同的函数签名,我无法弄清楚如何传递参数。
序列化是可以的,但使用 decodeFromString 函数的反序列化需要传递映射函数给定的类型为targetClass
.
我被困在这里:
val kotlinx = Json { coerceInputValues = true }
JavalinJson.toJsonMapper = object : ToJsonMapper {
override fun map(obj: Any): String = kotlinx.encodeToString(obj)
}
JavalinJson.fromJsonMapper = object : FromJsonMapper {
override fun <T> map(json: String, targetClass: Class<T>): T = kotlinx.decodeFromString(json)
}
但我得到:Cannot use 'T' as reified type parameter. Use a class instead.
我也试过:
JavalinJson.fromJsonMapper = object : FromJsonMapper {
override inline fun <reified T> map(json: String, targetClass: Class<T>): T = kotlinx.decodeFromString(json)
}
但我收到一个警告:Override by an inline function
和一个错误:Override by a function with reified type parameter
。
我是新手kotlin
,我正在努力理解这个覆盖有什么问题。