Конвертер сообщений Spring MVC Jackson: «Противоречивые определения сеттера» - PullRequest
1 голос
/ 10 апреля 2019

У меня есть приложение Spring Boot с контроллером, у которого есть конечная точка, которая принимает объект в качестве параметра, например:

@RestController
public class MyController {
    @PostMapping("/Student")
    public String createStudent(@RequestBody Student student) {
        //validate and persist Student object
        return "ok";
    }
}

Моя проблема в том, что у объекта Student есть перегруженный метод установки, и всякий раз, когда я POST к этой конечной точке, я получаю сообщение об ошибке Джексона о том, что существуют конфликтующие методы установки, и он не может выполнить синтаксический анализ.

Я искал в Интернете, и кажется, что решение состоит в том, чтобы добавить @JsonIgnore к одному из методов установки, однако объект Student из сторонней библиотеки, и я вообще не могу его редактировать.

Так, как я могу решить это? Есть ли простой «весенний» способ сделать эту работу? Я поиграл с модификацией конвертера HTTP-сообщений Spring's Jackson, но безуспешно

1 Ответ

2 голосов
/ 10 апреля 2019

Использование MixIn функция.

interface StudentMixIn {
    @JsonIgnore
    void setName(String name);
}

И зарегистрируйте его в ObjectMapper переопределении Jackson конвертера сообщений.

Смотри также:

...