RestTemplate.exchange提供UnrecognizedPropertyException(忽略@JsonIgnoreProperties)

时间:2018-01-24 20:23:46

标签: java json spring rest

我使用@JsonIgnoreProperties来忽略我的其余API返回的额外属性。

虽然这适用于ObjectMapper,但它不能用于RestTemplate上的exchange方法。当服务器返回POJO中找不到的属性时,我仍然会收到UnrecognizedPropertyException。

有没有办法为交换方法提供支持?

这是我的代码(我使用com.fasterxml.jackson.annotation.JsonIgnoreProperties)

@JsonIgnoreProperties(ignoreUnknown = true)
public class MyObject {

    private String id = "";

    public MyObject(String id) {
        this.id = id;
    }
    // .... getter and setter
}

...
ResponseEntity<MyObject> restResponse = 
                restTemplate.exchange(builder.build().encode().toUri(), HttpMethod.GET, request, MyObject.class);

1 个答案:

答案 0 :(得分:0)

您可能正在使用org.codehaus.jackson.annotate.JsonIgnoreProperties. 您必须将com.fasterxml.jackson.annotation.JsonIgnorePropertiesRestTemplate一起使用。

或者您也可以将restTemplateMappingJackson2HttpMessageConverter配置为忽略未知属性。类似的东西:

ObjectMapper mapper = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setObjectMapper(mapper);
restTemplate.getMessageConverters().add(converter);