我有一个带有一些@JsonView批注的实体(使用lombok)。
@Entity
@Table(name = "`order`")
@Getter
@Setter
@ToString
@Description("Приказ")
public class Order extends Auditable {
private static final long serialVersionUID = -1299630493411381582L;
@JsonView(JsonViews.OrderAdvancedSearch.class)
@ManyToOne
private School school;
@Column(length = 50)
private String number;
}
有一个用@JsonView注释注释的 Controller 方法。
@Secured(value = {"ROLE_AUTHENTICATED_USER"})
@RequestMapping(value = "/order", method = RequestMethod.GET, headers = {"Content-Type=application/json"})
@JsonView(JsonViews.OrderAdvancedSearch.class)
@ResponseBody
public ResponseEntity<Order> getOrder(HttpServletRequest request) throws IOException, DnevnikException, RestException {
Order order = orderRepository.findOne(292L); // just for example
return new ResponseEntity<>(order,HttpStatus.OK);
}
我期望输入将仅包含带有@JsonView注释的字段。
但是我充满了领域。
我正在尝试调试spring和jackson源。
在com.fasterxml.jackson.databind.SerializationConfig中,我看到 Activity View 是我的类JsonViews.OrderAdvancedSearch.class
但是在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase变量中,filteredProps始终具有我实体的所有属性。
最佳答案
尝试调整您的Jackson对象映射器:
// disable this feature so that attributes with no view definition
// do not get serialized / deserialized
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
引用:Feature: JSON Views
关于java - @JsonView不过滤属性(Spring 4.1.0.RC2,Jackson 2.3.2),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25563189/