如何全局设置Jackson忽略Spring中的未知属性?
ackson具有使用以下命令忽略类中未知属性的注释:
@JsonIgnoreProperties(ignoreUnknown = true)
它允许你使用以下注释忽略特定属性:
@JsonIgnore
如果要全局设置,可以修改对象映射器:
// jackson 1.9 and beforeobjectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
// or jackson 2.0
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
你如何使用spring对其进行全局设置,以便@Autowired
在服务器启动时无需编写其他类?
回答:
对于杰克逊1.9x或更低版本,你可以使用对象映射器提供程序忽略未知属性
@Provider@Component
public class JerseyObjectMapperProvider implements ContextResolver<ObjectMapper> {
@Override
public ObjectMapper getContext(Class<?> type) {
ObjectMapper result = new ObjectMapper();
result.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return result;
}
}
For jackson 1.9x及更高版本,你可以使用对象映射器提供程序忽略未知属性
@Provider@Component
public class JerseyObjectMapperProvider implements ContextResolver<ObjectMapper> {
@Override
public ObjectMapper getContext(Class<?> type) {
ObjectMapper result = new ObjectMapper();
result.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
return result;
}
}
Spring不会自动发现Jersey类。必须手动注册。
public class JerseyConfig extends ResourceConfig { public JerseyConfig() {
register(JerseyObjectMapperProvider.class);
}
}
以上是 如何全局设置Jackson忽略Spring中的未知属性? 的全部内容, 来源链接: utcz.com/qa/435268.html