我正在尋找一種方法,可以在通過Web服務發佈它們時通過JAXB輕鬆更改對象列表的元素名稱。這裏是例子:JAXB:爲對象列表註釋元素標記名稱的簡單方法
說我有一個對象我想要序列化到XML:
@XmlRootElement(name = "greeting")
public class TestClassForSo {
public String id;
public List<String> description;
}
而且我有一個發佈這些對象作爲XML列表的Web服務:
@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>
有一封asy的方式來將列表的元素名稱更改爲greetings
,而不是將其放入包裝方法或編寫自己的序列化機制等?
顯然,由於命名約定,我無法更改TestClassForSo
的名稱。
作爲一個側面的問題,這個問題真的很重要,除了使它對人類更具可讀性什麼是列表的元素名稱?
謝謝你考慮這個問題。任何幫助表示讚賞。我已經研究過網絡上的類似問題,但沒有任何內容似乎完全適合我的問題。
問候
您好,感謝您的答覆。這就是我最終做的。您分享的鏈接有助於未來的JAXB努力者。 – Scyla101