如何使用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());