Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java @JsonView非过滤属性(Spring 4.1.0.RC2,Jackson 2.3.2)_Java_Json_Spring_Jackson_Json View - Fatal编程技术网

Java @JsonView非过滤属性(Spring 4.1.0.RC2,Jackson 2.3.2)

Java @JsonView非过滤属性(Spring 4.1.0.RC2,Jackson 2.3.2),java,json,spring,jackson,json-view,Java,Json,Spring,Jackson,Json View,我有一个实体(使用lombok)带有一些注释的@JsonView注释 @Entity @Table(name = "`order`") @Getter @Setter @ToString @Description("Приказ") public class Order extends Auditable { private static final long serialVersionUID = -1299630493411381582L; @JsonView(JsonV

我有一个实体(使用lombok)带有一些注释的@JsonView注释

@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;
}
@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注解

@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;
}
@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);
}
@Secured(值={“角色\u身份验证的用户”})
@RequestMapping(value=“/order”,method=RequestMethod.GET,headers={“Content Type=application/json”})
@JsonView(JsonViews.OrderAdvancedSearch.class)
@应答器
public ResponseEntity getOrder(HttpServletRequest请求)引发IOException、DNEVNikeException、RestException{
Order-Order=orderRepository.findOne(292L);//举个例子
返回新的响应状态(订单,HttpStatus.OK);
}
我希望输入只包含用@JsonView注释的字段。 但我有很多领域

我正在调试spring和jackson的源代码。 在com.fasterxml.jackson.databind.SerializationConfig中,我看到活动视图是我的类JsonViews.OrderAdvancedSearch.class
但是在com.fasterxml.jackson.databind.ser.std.BeanSerializerBase中,变量FilteredOps始终具有我的实体的所有属性。

尝试调整jackson对象映射器:

// disable this feature so that attributes with no view definition
// do not get serialized / deserialized
mapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);

参考资料:

@Attila T的答案足够了,但我已经发布了如何调整对象映射器并在任何地方使用它的代码

控制器代码:

@Autowired
JSONMapper objectMapper;

@RequestMapping
public ResponseEntity<> getSchoolDetails(ParameterMapper mapper,HttpServletResponse           response) throws JsonGenerationException, JsonMappingException, IOException
{
     Order order =  orderRepository.findOne(292L);
    ObjectWriter w = objectMapper.writerWithView(SomeClass.class);
    objectWriter.writeValue(response.getWriter(),order);
  return new ResponseEntity<>(order,HttpStatus.OK);
}
调度程序配置(针对基于xml的配置进行相应更改)

@覆盖

public void configureMessageConverters(列表)您找到答案了吗?我对Spring 4.1 RC2和Jackson 2.3.2也有同样的问题。当我直接使用ObjectMapper时,我可以让@JsonView注释工作,但不能通过Spring自动工作。