【发布时间】:2020-12-09 17:33:10
【问题描述】:
想象一下,当您有一个 Java 模型时,您必须将它序列化为 XML 和 CSV。
我将 Jaxb Marshaller 用于 XML,将 Jackson 的 CsvMapper (ObjectMapper) 用于 CSV。
由于格式略有不同,我希望 Jackson 的 CsvMapper 忽略 Jaxb 相关的注释,如 @XmlType 或 @XmlElement。因为 Jackson 也在获取信息/考虑 xml 注释,这会导致错误的结果。
我该怎么做?
【问题讨论】:
-
如何创建
CsvMapper实例?Jackson默认不识别JaxB注释。要识别它们Jackson需要 jackson-module-jaxb-annotations 模块。 -
不,
Jackson默认会识别Jaxb注解,其中一些注解的优先级高于自己的注解 -
您是否使用
Jackson和Spring Boot或类似的可以自动注册JAXB模块的东西?你如何创建CsvMapper对象?您能否创建一个可以重现此错误的简单示例? -
csvMapper.findAndRegisterModules();- 此行尝试注册类路径上可用的模块。您可以删除它,JAXB模块将被忽略。仅手动注册您需要的此模块。 -
你是对的!你应该把它作为答案!谢谢!
标签: java serialization jackson annotations jaxb