首页 > 解决方案 > Jackson 完全忽略 Jaxb XML 相关的注解

问题描述

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

我使用Jaxb MarshallerXML 和 Jackson's CsvMapper( ObjectMapper) 的 CSV。

由于格式略有不同,我希望杰克逊CsvMapper忽略Jaxb相关的注释,如@XmlTypeor @XmlElement。因为杰克逊也在获取信息/考虑 xml 注释,它会导致错误的结果。

我该怎么做?

标签: javaserializationjacksonannotationsjaxb

解决方案


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

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

findAndRegisterModules方法调用findModules哪个文档说:

使用 JDK ServiceLoader 工具以及模块提供的 SPI 来定位可用方法的方法。

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

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


推荐阅读