我正在尝试用杰克逊创建一些xml,但我无法按照我的需要显示列表.我正进入(状态:
<Messages>
<Messages>...</Messages>
<Messages>...</Messages>
</Messages>
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像:
<Messages>
<Message>...</Message>
<Message>...</Message>
</Messages>
Run Code Online (Sandbox Code Playgroud)
我的代码看起来像这样:
public List<Message> messages;
Run Code Online (Sandbox Code Playgroud)
无论我命名该变量,所有子元素的名称都是相同的.我相信这已在其他地方得到解答,但我找不到任何能解决我问题的事情.谢谢您的帮助.
jha*_*amm 18
我找到了这样做的简单方法,无需添加更多依赖项.你只需使用注释:
@JacksonXmlElementWrapper(localName = "Messages")
@JacksonXmlProperty(localName = "Message")
Run Code Online (Sandbox Code Playgroud)
这个问题是我指向正确方向的原因. Jackson XML全局设置容器类型的元素名称.您还可以在此处阅读github页面上的此注释
尝试这样的JAXB注释:
@XmlElementWrapper(name = "Messages")
// XmlElement sets the name of the entities
@XmlElement(name = "Message")
public List<Message> messages;
Run Code Online (Sandbox Code Playgroud)
有关在Jackson中使用JAXB注释,请参阅http://wiki.fasterxml.com/JacksonJAXBAnnotations.
这里有一个很好的JAXB教程:
http://www.vogella.com/articles/JAXB/article.html
和这里:
https://jaxb.java.net/tutorial/index.html
这对于字符串列表来说非常有效。
<Messages>
<Message>msg1</Message>
<Message>msg2</Message>
<Message>msg3</Message>
</Messages>
Run Code Online (Sandbox Code Playgroud)
@JacksonXmlElementWrapper(localName = "Messages")
@JacksonXmlProperty(localName = "Message")
public List<String> messages;
Run Code Online (Sandbox Code Playgroud)