杰克逊反序列化到子元素列表

编程入门 行业动态 更新时间:2024-10-28 04:23:21
本文介绍了杰克逊反序列化到子元素列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有一个看起来像这样的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 + "]"; } }

更多推荐

杰克逊反序列化到子元素列表

本文发布于:2023-08-01 12:23:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1268283.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:杰克逊   元素   序列化   列表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!