语言:Kotlin,Spring 版本:3.2.3
我有一个控制器,它提供一个具有单一属性的对象:
@RestController
@RequestMapping("")
class Test {
@PostMapping("khar")
fun khar(@RequestBody body: UserByTokenRequest): String {
return body.apiToken
}
}
class UserByTokenRequest(val apiToken: String)
我调用它,但我得到“错误请求”,状态代码为400,服务器的日志是:
警告 o.s.w.s.m.s.DefaultHandlerExceptionResolver:247 - 已解决 [org.springframework.http.converter.HttpMessageNotReadableException: JSON 解析错误:无法构造实例
(尽管至少存在一个 Creator):无法从 Object 反序列化 值(无基于委托或基于属性的创建者)]ir.police.policecore.userclass.model.dto.UserByTokenRequest
当我向“UserByTokenRequest”添加另一个属性或仅向该属性添加
@JsonProperty
时,问题就会消失,并且我会得到响应。
我只是想知道为什么它不适用于单一属性。
请检查依赖项列表中是否有“com.fasterxml.jackson.module:jackson-module-kotlin”。此依赖项允许 Spring Boot 中默认使用的 Jackson 反序列化器与 Kotlin 类一起使用。