我在kotlin springboot创建一个控制器时遇到问题,该控制器可以访问Any?BodyRequest
我尝试了a找到的解决方案,并使用filterIsInstance作为列表,至于单个数据,但仍然没有解决的问题
这是我的代码
fun create(@Valid @RequestBody dataRequest: Any?) : ResponseEntity<Response> {
var lsCoa:List<Master> = listOf();
if (dataRequest is List<*>) {
lsCoa = dataRequest.filterIsInstance<Master>()
println(lsCoa.size) ==> this print 0
}else if(dataRequest != null){
println(2)
val b:Master = dataRequest as Master ==> this got error java.util.LinkedHashMap cannot be cast to asg.tax.model.Master
if(b != null){
lsCoa = listOf<Master>(b)
}
}
return service.create(lsCoa)
}
这是主数据类
data class Master (
var code:String,
var name:String? = "",
var type:String? = ""
)
这是请求的例子
单数据
{
"code":100005,
"name":"Test",
"type":"Total"
}
这是一个多数据
[
{
"code":100005,
"name":"test 1",
"type":"Total"
},
{
"code":100006,
"name":"test 2",
"type":"Total"
}
]
我是不是错过了什么??
我很乐意得到任何帮助。
问题是Spring不知道应该将输入解析到哪个类中。它查看您的方法签名,并尝试将HTTP请求解析为方法参数。
如果您的方法接受Any?
,Spring不知道应该将输入解析到哪个类,所以它只创建列表/映射并将其传递给方法。
有关更多信息,请参阅官方文档。