本文介绍了杰克逊反序列化到子元素列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个看起来像这样的xml
I have an xml that looks like this
<Trade> <row> <TradeID>1</TradeID> </row> <row> <TradeID>2</TradeID> </row> </Trade>我想将此反序列化为对象列表.现在我知道我可以做到
And I'd like to deserialize this into a list of objects. Now I know I could do
public class Trade{ List<Row> rows; public class Row{ int tradeID; } }但是理想情况下,我想避免完全基于outter标签创建一个类,因为它毫无价值.有什么办法可以将这个xml直接反序列化为List<Row>?
But ideally I'd like to avoid creating a class based on the outter tag entirely because it's worthless. Is there any way I could deserialize this xml directly to a List<Row>?
推荐答案如果您想直接反序列化为List<Row>,只需在 xmlMapper#readValue
If you'd like to deserialize into List<Row> directly , you can just specify the desired valueType in xmlMapper#readValue
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 + "]"; } }更多推荐
杰克逊反序列化到子元素列表
发布评论