我查看了这个question,并使用
使其工作.configure(DeserializationConfig.Feature.USE_ANNOTATIONS, true)
.configure(SerializationConfig.Feature.USE_ANNOTATIONS, true);
在我的自定义ObjectMapper
使用上述配置,Json序列化可以正常工作。
但问题是我现在想使用Jackson 2.x是因为更好的反序列化控制,我找不到任何好的文档来说明如何配置jackson 2.x来忽略JAXB注释
任何帮助都将不胜感激。
更新:我尝试了objectMapper.configure(MapperFeature.USE_ANNOTATIONS, false);
但这似乎对杰克逊拿起JAXB注释没有任何影响。
第二次更新:将以下解决方案作为答案发布。
答案 0 :(得分:1)
我找到的解决方案是创建我的ObjectMapper
,然后在main方法中使用jersey注册它(我使用带球衣的SpringBoot作为完整的解决方案)。
如果我在其他类中创建ObjectMapper
并尝试在main中注册它,则不会调用该类的构造函数,也不会调用重写的getContext()
方法。所以我在main方法中创建了ObjectMapper,并使用jersey注册了提供程序。
段:
ObjectMapper mapper = new ObjectMapper();
mapper.enable(MapperFeature.USE_ANNOTATIONS);
// create JsonProvider to provide custom ObjectMapper
JacksonJsonProvider provider = new JacksonJsonProvider();
provider.setMapper(mapper);
和
register(provider);
Maven依赖项,作为注释和JacksonJsonProvider可用于不同的工件:
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jaxb-annotations</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>
希望它有所帮助。