【发布时间】:2020-05-11 05:01:48
【问题描述】:
我正在使用Spring Boot 2.2.2 和Kotlin 1.3.61 构建一个API。
我以前做过,不记得遇到过这个问题。
基本上我有以下 DTO:
class RequestDTO {
@JsonProperty(value = "phone_number")
var phoneNumber: String = ""
}
我想将它用作 POST 控制器的参数:
@PostMapping("/test")
fun test(@RequestBody body: RequestDTO): Object {
return service.doStuff(body)
}
我正在请求它
{
"phone_number": "12345"
}
我的RequestDTO 没有定义phoneNumber 属性(默认值为空)。如果我在请求中传递了phoneNumber,那么它可以很好地反序列化。
还有一个非常奇怪的部分是以下代码可以正常工作:
val om = ObjectMapper()
val rqDto = RequestDTO()
rqDto.phoneNumber = "12345"
val rqStr = om.writeValueAsString(rqDto) // { "phone_number": "12345" }
val rqDto2 = om.readValue(rqStr, RequestDTO::class.java) // [phoneNumber = "12345"]
所以问题似乎是关于@RequestBody 和@JsonProperty 在一起......?我错过了一些配置吗?
我也尝试过使用@get:JsonProperty() 和@set:JsonProperty(),但没有成功。
谢谢
【问题讨论】:
-
请求中的 "phone_numer" 是错字,对吧?
-
@amseager 是的,仅在问题中。已修复,谢谢。
-
奇怪的是,我刚刚使用 SPring Initializr 从 0 开始了一个项目,它似乎工作正常......将四处寻找,看看我的项目中是否有任何其他依赖项可能是冲突的......
标签: json spring-boot kotlin jackson