Как отменить @jsonIgnore в конкретном методе - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть домен javabean, некоторые бины содержат много информации с паролем и IP-адресом для входа в систему, я использую @jsonIgnore для фильтрации этого свойства, которое я не хочу, чтобы конечный пользователь знал.

Но естьпроблема, в другом методе я использую тот же javabean для отправки обратно на лицевую сторону, но теперь мне нужно какое-то свойство из этого домена, в любом случае может отменить этот @jsonIgnore каким-то конкретным методом?

@ JsonIgnore

private String address;

private Integer drawnum;

но сейчас мне нужен адрес, я не могу этого сделать ..... Я не хочу использовать дляцикл для добавления в другой объект.

1 Ответ

0 голосов
/ 27 сентября 2018

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

Посмотрите этот превосходный учебник , он объясняет все, даже использование Spring MVC.

Создание классов для аннотирования полей:

public class Views {
    public static class Public {
    }

    public static class Internal extends Public {
    }
}

Аннотируйте поля:

public class Item {

    @JsonView(Views.Public.class)
    public int id;

    @JsonView(Views.Public.class)
    public int drawnum;

    @JsonView(Views.Internal.class)
    public String address;
}

В контроллере, если вы хотите сериализовать только "общие" свойства;

@JsonView(Views.Public.class)
@RequestMapping("/items/{id}")
public Item publicItem(@PathVariable int id) {

Результат: {"id":2,"drawnum":5}

В другом контроллере, если вы хотите, чтобы все свойства были сериализованы;

@JsonView(Views.Internal.class)
@RequestMapping("/items/{id}")
public Item internalItem(@PathVariable int id) {

Результат: {"id":2,"drawnum":5,"address":"My address"}

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