使用XmlMapper动态序列化字段

时间:2019-09-14 05:34:02

标签: java xml spring-boot jackson-dataformat-xml

我正在使用Jackson库将POJO映射到XML。

 compile ('com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.9.0')

我有一个Invoice类,其中有许多InvoiceLineItem

@NoArgsConstructor
@AllArgsConstructor
@Getter
public class Invoice {

    @JacksonXmlProperty(localName = "InvoiceNo")
    private String invoiceNumber;

    @JacksonXmlProperty(localName = "InvoiceType")
    private String invoiceType;

    @JacksonXmlProperty(localName = "Line")
    @JacksonXmlElementWrapper(useWrapping = false)
    private List<InvoiceLineItem> invoiceLineItemList;

}

InvoiceLineItem类类似于

@NoArgsConstructor
@AllArgsConstructor
@Getter
public class InvoiceLineItem {

    @JacksonXmlProperty(localName = "ProductDescription")
    private String productDescription;

    @JacksonXmlProperty(localName = "Quantity")
    private BigDecimal quantity;

    @JacksonXmlProperty(localName = "UnitPrice")
    private BigDecimal unitPrice;

    @JacksonXmlProperty(localName = "DebitAmount")
    private BigDecimal debitAmount;

    @JacksonXmlProperty(localName = "CreditAmount")
    private BigDecimal creditAmount;

}

我的目标是根据Invoice类中的invoiceType序列化InvoiceLineItem 例如,如果invoiceType为x,则creditAmount中的InvoiceLineItem字段不应序列化。而如果invoiceType为y,则debitAmount中的InvoiceLineItem字段不应序列化。

我考虑过使用客户序列化程序,但是我需要知道还有其他方法可以序列化此程序。

0 个答案:

没有答案