Как заставить Джексона учитывать @JsonView при сериализации ЛЮБОГО ответа в приложении Spring Boot? - PullRequest
0 голосов
/ 13 июня 2019

Я хочу реализовать следующие функциональные возможности: при сериализации моей модели dto в ответе от метода контроллера ее обычно следует возвращать без пары полей (например, name field), но дляДля некоторых конечных точек модель должна быть возвращена полностью (с полем name).

Чтобы реализовать это, я пометил поле в моей модели, которое я хочу скрыть от ответа, с помощью @JsonView как:

@JsonView(View.Detail.class)
private String name;

, и я установилсвойство DEFAULT_VIEW_INCLUSION для true, идея в том, что если я не добавлю аннотацию @JsonView в метод контроллера, он вернет модель без поля name : свойство enabled будетзаставьте Джексона сериализовать каждое поле в модели без аннотации @JsonView, и name не следует сериализовать, потому что, ну, в общем, представление не задано, в частности, View.Detail не установлено, поэтому поле, которое ожидает это представление, должноне быть сериализованным.

Однако это не сработает.Когда я не отмечаю метод контроллера с помощью @JsonView, создается впечатление, что Джексон полностью игнорирует любые @JsonView аннотации на модели и сериализует все при возврате ответа от этогоmethod.

Единственный способ заставить его работать, это аннотировать каждый метод контроллера, где я хочу, чтобы моя функциональность по умолчанию (модель dto сериализована без поля name) с помощью фиктивного @JsonView(View.SomeDummyView.class).Когда я делаю это, поскольку я включил DEFAULT_VIEW_INCLUSION, он снова сериализует все без аннотации @JsonView и не сериализует name, потому что для него требуется представление View.Details.class, а не View.SomeDummyView.class.

Теперь мой вопрос: как я могу заставить Джексона проверять аннотации @JsonView на полях в модели для каждого сериализованного ответа, даже если метод контроллера, который генерирует этот ответ, не являетсяотмечены @JsonView?

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