简体   繁体   English

泽西岛REST服务输出格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM