【问题标题】:JAXB or Jackson for xml unmarshalling?用于 xml 解组的 JAXB 或 Jackson?
【发布时间】:2019-11-25 07:09:27
【问题描述】:

收到XML 响应后,有两种主要解决方案将 xml 解码为 DTO 对象。为什么人们更喜欢JAXB 而不是jackson,或者相反?

JAXB:

Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
XMLStreamReader reader = XMLInputFactory.newInstance().createXMLStreamReader(new StringReader(xmlString));
unmarshaller.unmarshal(reader, DtoObject.class);

杰克逊:

mapper = new ObjectMapper() / new XmlMapper();
mapper.readValue(xmlString, DtoObjectc.class);

【问题讨论】:

    标签: java xml jackson jaxb


    【解决方案1】:

    在我看来,我会使用 JAXB,原因如下。

    1. 它已经相当成熟,是 JDK 的一部分。
    2. 我不需要使用第三方附加库
    3. Jackson2 XML 转换与 JAXB 相比是新的,JAXB 在行业中已经存在很长时间并且有很多社区。​​li>

    但是,我并不是说好坏。同样,它是开发人员使用的选择。

    【讨论】:

      【解决方案2】:

      从功能上来说,没有区别。全部用于 java 对象 xml 对象。但是,存在性能差异。我已经在 J​​AXB 和 Dozer Mapper 之间使用 Jmeter 进行了测试。结果显示 JAXB 的效率约为 50%。我不知道杰克逊怎么样。但从我个人的经验来看。我更喜欢 JAXB。供你参考。

      【讨论】:

        【解决方案3】:

        XmlMapper 需要较少的配置,并且在 PascalCase 映射等边缘情况下,它可以在 jaxb2 不支持的情况下工作。

        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-xml</artifactId>
            <version>2.9.8</version>
        </dependency>
        

        使用与 com.fasterxml 中其他内容相同的版本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-17
          • 2020-12-09
          • 2013-11-15
          • 1970-01-01
          • 2021-10-20
          • 2017-01-11
          • 1970-01-01
          相关资源
          最近更新 更多