如何全局设置Jackson忽略Spring中的未知属性?

ackson具有使用以下命令忽略类中未知属性的注释:

@JsonIgnoreProperties(ignoreUnknown = true) 

它允许你使用以下注释忽略特定属性:

@JsonIgnore

如果要全局设置,可以修改对象映射器:

// jackson 1.9 and before

objectMapper.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

回到顶部