【问题标题】:How to translate Java list into XML using JAXB annotations?如何使用 JAXB 注释将 Java 列表转换为 XML?
【发布时间】:2016-02-10 12:40:09
【问题描述】:

如何翻译 Java 列表

List<String> locations

进入 XML 表示

...

<locations>
    <location>/bob/app/l1.xml</location>
    <location>/bob/app/l2.xml</location>
    <location>/bob/app/l3.xml</location>
</locations>

...

同时保存JSON兼容格式:

...

"locations": ["/bob/app/l1.xml","/bob/app/l2.xml"]

...    

我使用 Spring 并且我当前获得响应的 XML 格式是

...
<locations>/bob/app/l1.xml</locations>
<locations>/bob/app/l2.xml</locations>
...

我使用 JAXB 注释

@XmlElement(name = "locations")
public void setLocations(List<String> locations) {
    this.locations = locations;
}

UPD

我找到了解决方案。我只需要使用

@XmlElementWrapper(name = "locations")
@XmlElement(name = "location")
public List<String> getLocations() {
    return locations;
}

【问题讨论】:

  • 这是在您的应用程序内部,还是您想要以 XML/Json 形式获得的响应?
  • &lt;locations&gt;&lt;location&gt;a&lt;/location&gt;&lt;/locations&gt;我想得到。
  • 现在我得到&lt;locations&gt;a&lt;/locations&gt;&lt;locations&gt;b&lt;/locations&gt;
  • 你可以在这个方法周围放置一个包装类。用“位置”注释类。将此注释更改为“位置”。希望这会产生你想要的东西。可以在这里找到类似的东西'stackoverflow.com/questions/14202529/…'

标签: java xml jaxb


【解决方案1】:

正如@renju所说,你可以这样包装它..

@XmlRootElement(name="locations")
public class Locations {

    @XmlElement(name="location")
    private List<String> locations;

    //setter and getter
}

【讨论】:

  • 我收到了"locations": {"location": ["A","B"]}
  • 你想得到 { "locations": ["A", "B"] } ?
  • 是的,我只需要 JSON 格式。
  • 尝试使用@JsonProperty("locations") 进行注释
猜你喜欢
  • 2019-04-29
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多