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在服务器启动时无需编写其他类?
@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); } }