У меня есть контроллер, который производит JSON, и с этого контроллера я возвращаю объект сущности, который автоматически сериализуется Jackson.Избегайте сериализации определенных полей во время выполнения в Jackson
Теперь я хочу избежать возврата некоторых полей на основе параметра, переданного контроллеру. Я рассмотрел примеры, где это делается с помощью FilterProperties/Mixins и т. Д. Но все примеры, которые я видел, требуют от меня использовать ObjectMapper для сериализации/де-сериализации компонента вручную. Есть ли способ сделать это без ручной сериализации? Код у меня есть похожее на это:
@RestController
@RequestMapping(value = "/myapi", produces = MediaType.APPLICATION_JSON_VALUE)
public class MyController {
@Autowired
private MyService myService;
@RequestMapping(value = "/test/{variable}",method=RequestMethod.GET)
public MyEntity getMyEntity(@PathVariable("variable") String variable){
return myservice.getEntity(variable);
}
}
@Service("myservice")
public class MyService {
@Autowired
private MyEntityRepository myEntityRepository;
public MyEntity getEntity(String variable){
return myEntityRepository.findOne(1L);
}
}
@Entity
@Table(name="my_table")
@JsonIgnoreProperties(ignoreUnknown = true)
public class MyEntity implements Serializable {
@Column(name="col_1")
@JsonProperty("col_1")
private String col1;
@Column(name="col_2")
@JsonProperty("col_2")
private String col2;
// getter and setters
}
Теперь, основываясь на значении «переменной» передается в контроллер, я хочу, чтобы показать/скрыть col2 от MyEntity. И я не хочу сериализовать/десериализовать класс вручную. Есть какой-либо способ сделать это? Могу ли я внешне изменить использование Mapper Jackson для сериализации класса на основе значения «переменная»?
Has мой ответ с 'JsonView' работал для вас, или вы все еще некоторые проблемы ? –