我们正在尝试将XML反序列化为JSON。在大多数情况下,它工作正常。我们用@JacksonXmlProperty注释了我们的POJO。但是我们有一个导致问题的新方案。问题是使用同一个对象的2个不同集合,但名称不同。
这是一个简化的XML输入:
<Invoice>
<Payments>
<Payment>
<Amount>
</Payment>
</Payments>
<Refunds>
<Refund>
<Amount>
</Refund>
</Refunds>
</Invoice>
相应的POJO如下所示:
public class Invoice {
@JacksonXmlElementWrapper(localName = "Payments")
protected List<Payment> payments;
@JacksonXmlProperty(localName = "Refunds")
protected List<Payment> refunds;
}
它无例外地反序列化,但Refunds集合中的退款属性都是null。
有没有办法在不创建退款POJO的情况下执行此操作?
答案 0 :(得分:0)
问题实际上是JacksonXML注释,而不是在不同集合中使用相同的对象。退款也是一个集合,所以它也应该有@JacksonXMLElementWrapper,如下所示:
public class Invoice {
@JacksonXmlElementWrapper(localName = "Payments")
protected List<Payment> payments;
@JacksonXmlElementWrapper(localName = "Refunds")
protected List<Payment> refunds;
}
这样工作得很好。顺便提一下,如果您使用简单的退款类,它只会扩展付款,它也会起作用。如果你真的想要一个不同的类。
public class Refund extends Payment {
}