如何使用Jax-RS返回Java List Json

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

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

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

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

我读过有关JaxbContext的内容,我理解它对我的帮助。

使用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 names; } 

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

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

 return listWithString .stream() .map( stringElement -> { MyBoxObject bo = new MyBoxObject(); bo.setSomeField(stringElement); return bo; }) .collect(Collectors.toList());