Java Dropwizard对象映射器未启用(MapperFeature.ACCEPT\u CASE\u Unsensitive\u ENUMS)

Java Dropwizard对象映射器未启用(MapperFeature.ACCEPT\u CASE\u Unsensitive\u ENUMS),java,enums,dropwizard,jackson-databind,Java,Enums,Dropwizard,Jackson Databind,我希望jackson能够解析不区分大小写的枚举。例如 public enum OperType { SUM PRODUCT } 我想接受POST请求中的“SUM”和“SUM” 我正在Application::run中找到objectMapper并启用设置: environment.getObjectMapper().enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS); 但这是没有效果的 Jersey没有使用Dropwizard引导中

我希望jackson能够解析不区分大小写的枚举。例如

public enum OperType {
  SUM
  PRODUCT
}
我想接受POST请求中的“SUM”和“SUM”

我正在Application::run中找到objectMapper并启用设置:

environment.getObjectMapper().enable(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS);

但这是没有效果的

Jersey没有使用Dropwizard引导中的objectMapper,尽管Dropwizard的官方文档可能会让人相信这一点。 需要在Application::run中注册自定义ContextResolver以使其正常工作:

environment.jersey().register(new ObjectMapperContextResolver(injector.getInstance(ObjectMapper.class)));
其中:

@Provider
public class ObjectMapperContextResolver implements ContextResolver<ObjectMapper> {

    private final ObjectMapper mapper;

    public ObjectMapperContextResolver(ObjectMapper mapper) {
        this.mapper = mapper;
    }

    @Override
    public ObjectMapper getContext(Class<?> type) {
        return mapper;
    }

}
@Provider
公共类ObjectMapperContextResolver实现ContextResolver{
私有最终对象映射器映射器;
公共对象映射器PercontextResolver(对象映射器映射器){
this.mapper=mapper;
}
@凌驾
公共对象映射器getContext(类类型){
返回映射器;
}
}
伙计,这些关于dropwizard生态系统的文档对于一个还不是很精通的人来说真的很混乱