Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 在Javalin框架中用kotlinx.serialization替换Jackson_Json_Kotlin_Kotlinx.serialization_Javalin - Fatal编程技术网

Json 在Javalin框架中用kotlinx.serialization替换Jackson

Json 在Javalin框架中用kotlinx.serialization替换Jackson,json,kotlin,kotlinx.serialization,javalin,Json,Kotlin,Kotlinx.serialization,Javalin,我试图用Kotlinx.serialization替换默认的JSON序列化程序Jackson 文档说明了如何执行此操作。 不幸的是,kotlinx序列化程序具有不同的函数签名,我不知道如何传递参数 序列化是可以的,但是使用decodeFromString函数进行反序列化需要传递映射函数指定的类型,即targetClass 我被困在这里: val-kotlinx=Json{胁迫输入值=true} JavalinJson.toJsonMapper=object:toJsonMapper{ 覆盖趣味地

我试图用Kotlinx.serialization替换默认的JSON序列化程序Jackson

文档说明了如何执行此操作。
不幸的是,kotlinx序列化程序具有不同的函数签名,我不知道如何传递参数

序列化是可以的,但是使用decodeFromString函数进行反序列化需要传递映射函数指定的类型,即
targetClass

我被困在这里:

val-kotlinx=Json{胁迫输入值=true}
JavalinJson.toJsonMapper=object:toJsonMapper{
覆盖趣味地图(obj:Any):String=kotlinx.encodeToString(obj)
}
JavalinJson.fromJsonMapper=对象:fromJsonMapper{
重写有趣的映射(json:String,targetClass:Class):T=kotlinx.decodeFromString(json)
}
但是我得到:
不能使用'T'作为具体化的类型参数。改用类。

我还尝试:

JavalinJson.fromJsonMapper=object:fromJsonMapper{
重写内联乐趣映射(json:String,targetClass:Class):T=kotlinx.decodeFromString(json)
}
但是我得到一个警告:
由内联函数重写
,还有一个错误:
由具有具体类型参数的函数重写

我是新来的
kotlin
,我很难理解这种覆盖有什么问题。

试试这个:

JavalinJson.toJsonMapper=object:toJsonMapper{
覆盖趣味地图(对象:任意):字符串{
val serializer=序列化程序(obj.javaClass)
返回kotlinx.encodeToString(序列化程序,obj)
}
}
JavalinJson.fromJsonMapper=对象:fromJsonMapper{
重写有趣的映射(json:String,targetClass:Class):T{
@抑制(“未选中的_CAST”)
val反序列化器=序列化器(targetClass)作为KSerializer
返回kotlinx.decodeFromString(反序列化程序,json)
}
}

非常感谢,它看起来比以前好多了。不过我总是会犯一些错误<找不到类“Any”的代码>序列化程序。问题是,
serializer(targetClass)
返回一个
KSerializer
而不是
KSerializer
。我尝试了
val反序列化器:KSerializer=serializer()
,这似乎更合适,但我再次遇到了
具体化
的问题。似乎,这个错误与
toJsonMapper
有关。已编辑的答案,也添加了此答案。现在我得到以下错误:
找不到类“GenericResponse”的序列化程序。将该类标记为@Serializable或显式提供序列化程序
,这会更好,因为
GenericResponse
是我的序列化数据类。奇怪的是,这个类已经被标记为
Serializable