如何使用Apache Jersey在REST句柄的POST中捕获哈希映射

时间:2011-11-05 20:42:09

标签: rest post jersey

我希望在我的POST处理程序

中捕获此格式的XML(HashMap)
<entries>
  <entry>
    <id>1</id>
    <labels>
      <label>label1</label>
      <label>label2</label>
      ...
    </labels>
  <entry>
  ...
<entries>

我希望使用Apache Jersey的POST处理程序看起来像这样

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void createEntries(@MagicAnnotation HashMap<id, List<label>> entryMap){
    }

我最接近的是什么?

我愿意更好地表示HashMap to XML。我不想手动解析xml并且想要捕获等效的JSON。 我不确定是否可以使用某些JAXBElement而不是jersey注释。

1 个答案:

答案 0 :(得分:0)

你不应该以这种方式访问​​POST主体。 您必须定义几个类以让Jersey解析XML响应。

您的代码如下:

@POST
public Response post(Entries entries) {
  Storage.put(entries);
  return Response.ok().build();
}

为了完成这项工作,条目必须与JAXB兼容:

@XmlRootElement
public class Entries {
  @XmlElement List<Entry> entries;
}

@XmlType
public class Entry {
  @XmlAttribute String id;
  @XmlElement Labels labels;
}

@XmlType
public class Labels {
  @XmlElement List<String> label;
}

啊,泽西不是来自Apache,而是来自Sun。