如何在Rest Webservice中返回一个arraylist

时间:2017-01-07 06:26:05

标签: java rest

//Main service 

@Path("/test")
public class ReturnMultiple {

    public static ArrayList<String> al = new ArrayList<String>();

    @POST
    @Path("/new/{name}")
    @Produces(MediaType.TEXT_PLAIN)
    public ArrayList<String> display(@PathParam("name") String name) {
        al.clear();
        Todo td = new Todo();
        td.setName(name);
        al.add(td.getName());
        return al;
    }
}

// This is Pojo

public class Todo {

    private String name;

    public void setName(String name) {

        this.name = name;
    }

    public String getName() {
        return name;
    }

}

每当我点击服务时,我都会收到如下错误

  

Java类java.util.ArrayList和Java的消息体编写器   输入java.util.ArrayList和MIME媒体类型   找不到text / plain

2 个答案:

答案 0 :(得分:1)

您不能使用ArrayList并生成TEXT_PLAIN。你必须使用JSON。要在jax-rs中设置JSON消息体写入,您需要为ObjectMapper提供@Provider。 Here's an example

答案 1 :(得分:0)

我想,你需要一个mapper实现,它有助于序列化和反序列化。如果没有它,它不知道如何将arraylist转换为text / plain或application / json,或者就任何其他MIME类型而言。

如果您正在处理application / json,jackson库可以作为非常好的映射器工作。它有messagebodyreader和messagebodywriter供你完成这项艰巨的工作。

你可能有办法为你的休息服务(作为提供者)提供一个映射器,在某些实现中,如果你使用我记得在使用resteasy时使用的jackson jar,它会自行选择。