【问题标题】:Jackson parsing XML杰克逊解析 XML
【发布时间】:2020-09-22 13:33:42
【问题描述】:

我正在尝试将 POJO 类序列化为 Amazon XML 格式以聚合来自服务的日期。

目标是有一个像这样的xml:

<ShipmentEventList>
    <ShipmentEvent>
        <ShipmentItemList>
            <ShipmentItem></ShipmentItem>
        </ShipmentItemList>
        <AmazonOrderId>AAAA</AmazonOrderId>
        <PostedDate>BBBB</PostedDate>
        <MarketplaceName>CCCC</MarketplaceName>
        <SellerOrderId>DDDD</SellerOrderId>
    </ShipmentEvent>
</ShipmentEventList>

这是我的 POJO 课程

装运事件列表

public class ShipmentEventList {

   @JacksonXmlElementWrapper(localName = "ShipmentEventList")
   @JacksonXmlProperty(localName = "ShipmentEvent")
   private List<ShipmentEvent> shipmentEventList;
}

装运事件

@JacksonXmlRootElement(localName = "ShipmentEvent")
public class ShipmentEvent {

    @JacksonXmlElementWrapper(localName = "ShipmentItemList")
    private List<ShipmentItem> shipmentItemList;

    @JacksonXmlProperty(localName = "AmazonOrderId")
    private String amazonOrderId;

    @JacksonXmlProperty(localName = "PostedDate")
    private String postedDate;

    @JacksonXmlProperty(localName = "MarketplaceName")
    private String marketplaceName;

    @JacksonXmlProperty(localName = "SellerOrderId")
    private String sellerOrderId;

}

不幸的是,由于我有序列化:

<ShipmentEventList>
    <ShipmentEventList>
        <ShipmentEvent>
            <AmazonOrderId>A</AmazonOrderId>
            <PostedDate>B</PostedDate>
            <MarketplaceName>C</MarketplaceName>
            <SellerOrderId>D</SellerOrderId>
        </ShipmentEvent>
        <ShipmentEvent>
            <AmazonOrderId>B</AmazonOrderId>
            <PostedDate>C</PostedDate>
            <MarketplaceName>D</MarketplaceName>
            <SellerOrderId>E</SellerOrderId>
        </ShipmentEvent>
    </ShipmentEventList>
</ShipmentEventList>

您能解释一下杰克逊的收藏系列化是如何运作的吗?

【问题讨论】:

    标签: java xml jackson


    【解决方案1】:

    您需要将useWrapping 标志设置为false

    class ShipmentEventList {
    
        @JacksonXmlElementWrapper(useWrapping = false)
        @JacksonXmlProperty(localName = "ShipmentEvent")
        private List<ShipmentEvent> shipmentEventList;
    }
    

    【讨论】:

      猜你喜欢
      • 2014-06-17
      • 1970-01-01
      • 2018-08-25
      • 2019-07-27
      • 2014-08-22
      • 2019-11-25
      • 1970-01-01
      • 2019-02-06
      • 2012-09-11
      相关资源
      最近更新 更多