@RequestBody не работает с @JsonProperty - PullRequest
1 голос
/ 25 января 2020

Я строю API, используя Spring Boot 2.2.2 и Kotlin 1.3.61. Я делал это раньше и не помню, чтобы сталкивался с этой проблемой.

В основном у меня есть следующий 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"
}

Для My 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 Ответ

1 голос
/ 27 января 2020

Ну, оказывается, это была простая проблема. У проекта есть зависимость, для которой есть зависимость для org.codehaus.jackson, и я использовал org.codehaus.jackson.annotate.JsonProperty вместо com.fasterxml.jackson.annotation.JsonProperty. Изменение это сработало. -_-

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...