#java #json #spring #jackson #аннотации
Обращаюсь к контроллеру, который должен вернуть список объектов. Объекты преобразуются
в JSON строку. При преобразовании объектов в JSON строку вызываются все геттеры объектов.
И в результате возвращаются все данные объекта. Как запретить возврат некоторых полей
объекта, может есть специальная аннотация?
@Controller
@MessageMapping("/v1.0")
public class MyController {
@MessageMapping("/getList")
@SendTo("/topic/List")
public Collection getList() throws Exception {
return this.MyObjService.getList();
}
}
Собственно класс будущих объектов:
public class MyObj {
private String name;
private String login;
public String getName() {
return name;
}
public String getLogin() {
return login;
}
}
Хотелось бы запретить возврат поля login.
Ответы
Ответ 1
Как заметил @ArtemKonovalov по-умолчанию Spring использует в качестве JSON Mapper-а библиотеку Jackson. Она предлагает использовать аннотацию @JsonIgnore. Но рано или поздно вы захотите с одного объекта получить два разных JSON, отличающихся набором полей. Поэтому, по-хорошему нужно сделать отдельные DTO без логики, которые вы будете целиком сериализовать в JSON. PS. Кроме того, рекомендую взять за правило всегда явно вешать на поля аннотацию @JsonProperty и явно указывать в ней имя поля. Иначе случайный рефакторинг с переименованием поля поломает ваш API.
Комментариев нет:
Отправить комментарий