@RequestBody无法与@JsonProperty一起使用

时间:2020-01-24 21:08:07

标签: json spring-boot kotlin jackson

我正在使用Spring Boot 2.2.2Kotlin 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()而不成功。

谢谢

1 个答案:

答案 0 :(得分:1)

嗯,事实证明这是一个简单的问题。 该项目具有一个依赖项,该依赖项具有一个org.codehaus.jackson的依赖关系,我使用的是org.codehaus.jackson.annotate.JsonProperty而不是com.fasterxml.jackson.annotation.JsonProperty。更改它的工作。 -_-