[英]Jersey REST Service Output Format
I need to format the output (xml) of a restful service using Jersey according to following scenario 我需要根据以下情况使用Jersey格式化宁静服务的输出(xml)格式
I have a class with key value pair as follows. 我有一个具有键值对的类,如下所示。
@XmlRootElement(name="columnValues")
public class KeyValueDTO {
private String key;
private String val;
@XmlElement(name="column")
public String getKey() {
return key;
}
@XmlElement(name="value")
public String getVal() {
return val;
}
}
Suppose I have list like this which is returned by rest service: 假设我有这样的列表,该列表由rest服务返回:
List<KeyValueDTO> mylist = new ArrayList<KeyValueDTO>();
KeyValueDTO dto1 = new KeyValueDTO();
dto1.key = "Name";
dto1.val = "alex";
KeyValueDTO dto2 = new KeyValueDTO();
dto2.key = "Age";
dto2.val = 23
mylist.add(dto1);
mylist.add(dt02);
And I want to generate the output as follow 我想生成如下输出
<Name>alex</Name>
<Age>20</Age>
But currently it is giving following output 但目前它给出以下输出
<column>Name</column>
<value>alex</column>
<column>Age</column>
<value>20</column>
Can anyone let me know how to achieve this? 谁能让我知道如何实现这一目标?
You could try using an XmlAdapter: 您可以尝试使用XmlAdapter:
public class KeyValueAdapter extends XmlAdapter<String, List<KeyValueDTO>> {
@Override
public List<KeyValueDTO> unmarshal(String v) throws Exception {
// Needs implementation
return null;
}
@Override
public String marshal(List<KeyValueDTO> vs) throws Exception {
StringBuffer buffer = new StringBuffer();
for (KeyValueDTO v: vs) {
buffer.append(String.format("<%s>%s</%1$s>", v.key, v.val));
}
return buffer.toString();
}
}
And then add that adapter to your bean: 然后将该适配器添加到您的bean中:
@XmlRootElement
public static class Wrapper {
@XmlJavaTypeAdapter(KeyValueAdapter.class)
List<KeyValueDTO> dtos;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.