4

我想知道一个方法如何返回 List 的 JSON 数组,例如:

@GET 
@Produces("application/json")
public List<String> aMethod(){
  return Array.asList("text1", "text2", "text3");
}

我想知道,如何在我的方法中接收 List 参数类型,例如

@PUT
@Consumes("application/json") void otherMethod(List<String>){
   // do something ;
}

我已经阅读了有关 JaxbContext 的信息,我了解它对我的帮助。

4

2 回答 2

4

JAXB 支持两种类型List。第一个是元素列表,第二个是分隔字符串(“普通”XML 值或属性,使用某些分隔符将其解析为列表)。第一个似乎是您想要的(“数组”)。

如需参考,请参阅:http: //jaxb.java.net/jaxb20-ed/api/javax/xml/bind/annotation/XmlList.html

您会注意到,在这两种情况下,您想要的 List 都需要被其他对象封装。从根本上说,XML(以及扩展的 JAXB)喜欢将所有内容追溯到单个根节点/对象。所以要建模它,你需要这样的东西:

@XmlRootElement(name="wrapper")
public abstract class ListWrapper {
   public List<String> names;
}

然后您的方法需要更改为接受/返回ListWrapper对象并从中提取实际的列表。

于 2012-06-22T14:57:39.910 回答
0

我尝试了同样的方法但没有成功,所以我最终将一个字符串打包到一个字段对象中。

return listWithString
                .stream()
                .map(
                        stringElement -> {
                            MyBoxObject bo = new MyBoxObject();
                            bo.setSomeField(stringElement);
                            return bo;
                        })
                .collect(Collectors.toList());
于 2017-11-23T16:23:05.300 回答