RestTemplate忽略@JsonIgnoreProperties(ignoreUnknown = true)注释

时间:2014-04-03 10:41:24

标签: spring rest jackson deserialization

RestTemplate' getForObject方法忽略了该类的@JsonIgnoreProperties(ignoreUnknown = true)注释。

E.g。对

@JsonIgnoreProperties(ignoreUnknown = true)
public class Stock extends AbstractSObject
{
  // fields
}

RestTemplate rest = new RestTemplate();
Stock s = rest.getForObject("address", Stock.class);

我收到以下错误

  

无法读取JSON:无法识别的字段" SomeField" (类   sandbox.Stock),未标记为可忽略的

1 个答案:

答案 0 :(得分:15)

Spring RestTemplate期待com.fasterxml.jackson.annotation.JsonIgnoreProperties

如果您将旧版软件包中的org.codehaus.jackson.annotate.JsonIgnoreProperties注释用于其他目的,则可以手动设置RestTemplate以忽略未知属性:

RestTemplate rest = new RestTemplate();

ObjectMapper lax = new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

MappingJackson2HttpMessageConverter c = new MappingJackson2HttpMessageConverter();
c.setObjectMapper(lax);

List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(c);

rest.setMessageConverters(list);