spring - RestTemplate忽略@JsonIgnoreProperties(ignoreUnknown = true)批注

标签 spring rest jackson deserialization

RestTemplategetForObject方法将忽略类上的@JsonIgnoreProperties(ignoreUnknown = true)批注。

例如。为了

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


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

我收到以下错误

Could not read JSON: Unrecognized field "SomeField" (class sandbox.Stock), not marked as ignorable

最佳答案

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);

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

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

rest.setMessageConverters(list);

关于spring - RestTemplate忽略@JsonIgnoreProperties(ignoreUnknown = true)批注,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22835106/

相关文章:

java - 如何使用版本一 java REST 客户端将版本一工作 url(端点)转换为 java 查询

scala - Jerkson (Jackson) 与 scala.runtime.BoxedUnit 有问题吗?

java - json mapper writerWithDefaultPrettyPrinter 用于由换行符分隔的多个 json 对象

java - 如何使用 JsonTypeInfo 和反/序列化器来自定义处理多态子类型?

java - 使用具有默认值的 Quartz 调度程序的计划作业

java - 使用spring boot配置SOAP服务出错

java - Oracle 存储过程上的 Spring SimpleJdbcCall : Closed Connection accessing BLOB output parameter

java - 防止覆盖 application.properties 中的某些属性 - Spring Boot

java - 尝试使用 Jersey 注入(inject)自定义上下文时缺少字段依赖项

json - 查询 API 时,我在传递给 "Assertion failed: You must include an ` 的哈希中得到 `push` id`