杰克逊列表帮助 - Java

jha*_*amm 7 java xml jackson

我正在尝试用杰克逊创建一些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页面上的此注释


lre*_*der 5

尝试这样的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


Sum*_*tra 5

这对于字符串列表来说非常有效。

XML

<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)