Jackson 完全忽略 Jaxb XML 相关的注解

Jackson completely ignore Jaxb XML related annotations

想象一下,当您在 Java 中有一个模型时,您必须将其序列化为 XML 和 CSV。

我将 Jaxb Marshaller 用于 XML,将 Jackson 的 CsvMapper (ObjectMapper) 用于 CSV。

由于格式略有不同,我希望 Jackson 的 CsvMapper 忽略 Jaxb 相关注释,如 @XmlType@XmlElement。因为 Jackson 也得到 information/considers xml 注释,这会导致错误的结果。

我该怎么做?

这可能是您创建新的方式 CsvMapper:

CsvMapper csvMapper = new CsvMapper();
csvMapper.findAndRegisterModules();

findAndRegisterModules 方法调用 findModules 文档说:

Method for locating available methods, using JDK ServiceLoader facility, along with module-provided SPI.

所以,可能您在 class 路径上有 jackson-module-jaxb-annotations 模块,这就是 CsvMapper 识别 JAXB 注释的原因。

要修复它,您需要删除此方法的调用 findAndRegisterModules 并仅注册您需要的这些模块。