当前位置: 首页 > 知识库问答 >
问题:

Jersey REST服务输出格式

宦琪
2023-03-14

我需要根据以下场景格式化restful服务的输出(xml)

我有一个键值对如下的类。

@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;
    }
}

假设我有这样的列表,由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);

我想生成如下输出

<Name>alex</Name>
<Age>20</Age>

但目前它提供了以下输出

<column>Name</column>
<value>alex</column>
<column>Age</column>
<value>20</column>

有人能告诉我如何做到这一点吗?

共有1个答案

宰父志新
2023-03-14

您可以尝试使用XmlAdapter:

java prettyprint-override">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();
  }

}

然后将该适配器添加到bean中:

@XmlRootElement
public static class Wrapper {
  @XmlJavaTypeAdapter(KeyValueAdapter.class)
  List<KeyValueDTO> dtos;
}
 类似资料:
  • 有一个有趣的问题。。我们的防火墙后面有一个wordpress XML/RSS服务,该服务本地化到多个国家,可以与中文、俄文等完美结合。 为了公开这个服务,我们创建了一个简单的JSP服务,由于某些原因,它不会呈现外来字符。 任何想法都将不胜感激。

  • 问题内容: 我想知道Java是否有某种类可以帮助输出格式化。我知道在C ++中,在iomanip中,有一个方法调用setw。我想知道Java是否有与此类似的东西。 问题答案: 看看java.util.Formatter。 String.format()提供了一个方便的包装器。 例如(从链接上的示例修改): 它超越了C的?printf格式。例如,它支持可选的语言环境,并且格式符号可以通过显式索引而不

  • 问题:基于PersonDto中存在的规则值,我正在应用这些规则。在Rule1类中,我有一个修改id字段的逻辑。我正在设置新的id,我得到作为参数。 最后,我将结果存储到ArrayList中。 但是在ArrayList中,所有PersonDto的值都是我在应用规则时传递的最后一个id值。 例如: 正如您在上面的代码片段中所看到的,有两个ID10001和10002,但是当存储并打印结果时,所有元素中的

  • 嗨,我使用restFul web服务服务器端代码公开的服务是 @requestmapping(value=“/getPerson”,method=requestmethod.post)public ModelAndView getPerson(@requestparam(“inputXml”)String inputXml){ ----------------------------------

  • 我们可以看到格式化就是通过格式字符串得到特定格式: format!("{}", foo) -> "3735928559" format!("0x{:X}", foo) -> "0xDEADBEEF" format!("0o{:o}", foo) -> "0o33653337357" 根据使用的参数类型,同样的变量(foo)能够格式化成不同的形式:X, o 和未指定形式。 这个格式化的功能是通过 t

  • 1.1.1. inputflinger 1.1.1. inputflinger inputflinger为输入事件服务,基于android源码修改。 源码路径:robot/frameworks/native/services/inputflinger 此服务为系统级服务,不允许第三方应用直接调用,不支持多实例运行。可由类似AMS(Apps Manager Service)级别的系统进程注册inpu