杰克逊解析XML

时间:2020-09-22 13:33:42

标签: java xml jackson

我正在尝试将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课

ShipmentEventList

public class ShipmentEventList {

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

ShipmentEvent

@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>

您能解释一下在杰克逊中集合的序列化如何工作吗?

1 个答案:

答案 0 :(得分:1)

您需要将useWrapping标志设置为false

class ShipmentEventList {

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