【发布时间】:2016-11-29 08:01:05
【问题描述】:
我正在寻找一种方法,以便在通过 Web 服务发布对象列表时使用 JAXB 轻松更改对象列表的元素名称。示例如下:
假设我有一个要序列化为 XML 的对象:
@XmlRootElement(name = "greeting")
public class TestClassForSo {
public String id;
public List<String> description;
}
我有一个 Web 服务将这些对象的列表发布为 XML:
@GET
@Path("/so-test")
@Produces({AgiMediaType.APPLICATION_XML, AgiMediaType.APPLICATION_JSON})
@XmlElementWrapper(name = "wrapperName")
public List<TestClassForSo> getGreetings() {
List<TestClassForSo> greetingList = new ArrayList<>();
TestClassForSo greeting = new TestClassForSo();
String id = "hello-word";
List<String> greetings = new ArrayList<>(Arrays.asList("Hello World,
Bonjour le monde,
Hallo Welt,
Hola Mundo"));
greeting.id = id;
greeting.description = greetings;
greetingList.add(greeting);
return greetingList;
}
当我通过 HTTP GET 调用请求资源时,我得到以下结果:
<testClassForSoes>
<greeting>
<id>hello-word</id>
<description>Hello World, Bonjour le monde, Hallo Welt, Hola Mundo</description>
</greeting>
</testClassForSoes>
除了将其放入包装器方法或编写我自己的序列化机制等之外,是否有一种简单的方法可以将列表的元素名称更改为greetings?
显然,由于命名约定,我无法更改 TestClassForSo 的名称。
作为一个附带问题,除了让人类更容易阅读列表的元素名称之外,这个问题真的很重要吗?
感谢您调查这个问题。任何帮助表示赞赏。我在网上查看了类似的问题,但似乎没有什么完全适合我的问题。
问候
【问题讨论】:
标签: java jaxb jersey jax-rs xml-serialization