rest是否支持对象的arraylist?

我有一个类BookMain,它返回一个对象的arraylist。 我正在使用REST服务来获取输出,但是我收到了错误。

这是我的BookMain类:

@GET @Path("/get") @Produces(MediaType.APPLICATION_XML) public ArrayList addObjects() { Book book = new Book(); book.setName("The Book"); book.setAuthor("Author"); BookStore bookstore = new BookStore(); bookstore.setName("The Bookstore"); bookstore.setLocation("UK"); ArrayList list = new ArrayList(); list.add(book); list.add(bookstore); return list; } 

这是我得到的错误:

 11 Jul, 2013 3:36:52 PM com.sun.jersey.spi.container.ContainerResponse write SEVERE: A message body writer for Java class java.util.ArrayList, and Java type java.util.ArrayList, and MIME media type application/xml was not found 11 Jul, 2013 3:36:52 PM com.sun.jersey.spi.container. ContainerResponse write SEVERE: The registered message body writers compatible with the MIME media type are:application/xml -> com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$App com.sun.jersey.core.impl.provider.entity.DocumentProvider com.sun.jersey.core.impl.provider.entity.SourceProvider$SourceWriter com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$App com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$App 

任何人都可以为我提供解决方案吗?

引入如下的新课程

 @XmlRootElement(name = "responseList") public class ResposeList { private List list; public List getList() { return list; } public void setList(List list) { this.list = list; } } 

并将列表设置如下

 @GET @Path("/get") @Produces(MediaType.APPLICATION_XML) public ResposeList addObjects() { Book book = new Book(); book.setName("Here is the Game"); book.setAuthor("HHH"); BookStore bookstore = new BookStore(); bookstore.setName("Prateek Bookstore"); bookstore.setLocation("Vasanth Nagar"); ArrayList list = new ArrayList(); list.add(book); list.add(bookstore); ResposeList books=new ResposeList(); books.setList(list); return books; } 

您需要将您的实体(Arraylist)包装在Response对象下。 你的rest方法返回类型也应该是Response。 这是你需要做的:

 @GET @Path("/get") @Produces(MediaType.APPLICATION_XML) public Response addObjects() { Book book = new Book(); book.setName("Here is the Game"); book.setAuthor("HHH"); BookStore bookstore = new BookStore(); bookstore.setName("Prateek Bookstore"); bookstore.setLocation("Vasanth Nagar"); ArrayList list = new ArrayList(); list.add(book); list.add(bookstore); return Response.status(200).entity(list).build(); } 

还要在ResponseList bean中的getter之上添加@XmlElemen t

 @XmlRootElement public class ResponseList { private ArrayList list; @XMLElement("booksList") public ArrayList getList() { return list; } public void setList(ArrayList list) { this.list = list; } } 

您只需使用JSONArray即可显示结果。 创建一个JSONArray对象并将列表传递给JSONArray()构造函数。 然后以字符串格式返回JSONArray对象。 将方法的返回类型更改为String,然后使用以下代码。

大段引用

JSONArray a = new JSONArray(list); return a.toString();