gpt4 book ai didi

java - 如何使用@JacksonXmlProperty反序列化同一对象的不同名称的集合?

转载 作者:太空宇宙 更新时间:2023-11-04 11:00:48 33 4
gpt4 key购买 nike

我们正在尝试将 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;
}

无一异常(exception)地反序列化,但 Refunds 集合中退款的属性均为 null。

有没有办法在不创建退款 POJO 的情况下执行此操作?

最佳答案

问题实际上是 JacksonXML 注释的问题,而不是在不同集合中使用相同对象的问题。 Refunds 也是一个集合,因此它也应该具有 @JacksonXMLElementWrapper,如下所示:

public class Invoice {
@JacksonXmlElementWrapper(localName = "Payments")
protected List<Payment> payments;

@JacksonXmlElementWrapper(localName = "Refunds")
protected List<Payment> refunds;
}

这样就可以正常工作了。顺便说一句,如果您使用简单扩展 Payment 的简单 Refund 类,它也可以工作。如果您确实想要不同的类(class)。

public class Refund extends Payment {
}

关于java - 如何使用@JacksonXmlProperty反序列化同一对象的不同名称的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46918466/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com