gpt4 book ai didi

java - Jackson 反序列化为子元素列表

转载 作者:行者123 更新时间:2023-12-02 09:38:42 24 4
gpt4 key购买 nike

我有一个如下所示的 xml

<Trade>
<row>
<TradeID>1</TradeID>
</row>
<row>
<TradeID>2</TradeID>
</row>
</Trade>

我想将其反序列化为对象列表。现在我知道我可以做到

public class Trade{
List<Row> rows;
public class Row{
int tradeID;
}
}

但理想情况下,我希望完全避免创建基于外部标记的类,因为它毫无值(value)。有什么方法可以直接将此 xml 反序列化为 List<Row>?

最佳答案

如果您想反序列化为 List<Row>直接,您可以在 xmlMapper#readValue 中指定所需的 valueType

 String xml =
"<Trade>\r\n"
+ " <row>\r\n"
+ " <TradeID>1</TradeID>\r\n"
+ " </row>\r\n"
+ " <row>\r\n"
+ " <TradeID>2</TradeID>\r\n"
+ " </row>\r\n"
+ "</Trade>\r\n"
+ "";
XmlMapper xmlMapper = new XmlMapper();
List<Row> rows = Arrays.asList(xmlMapper.readValue(xml, Row[].class));

System.out.println(rows);

打印:

[Row [tradeId=1], Row [tradeId=2]]

和 Row 类:

import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlRootElement;

@JacksonXmlRootElement(localName = "row")
public class Row {
@JacksonXmlProperty(localName = "TradeID")
private int tradeId;

public int getTradeId() {
return tradeId;
}

public void setTradeId(int tradeId) {
this.tradeId = tradeId;
}

@Override
public String toString() {
return "Row [tradeId=" + tradeId + "]";
}
}

关于java - Jackson 反序列化为子元素列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278899/

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