Java 如何在Rest Webservice中返回arraylist //主服务 @路径(“/test”) 公共类返回{ public static ArrayList al=new ArrayList(); @职位 @路径(“/new/{name}”) @生成(MediaType.TEXT\u PLAIN) 公共ArrayList显示(@PathParam(“名称”)字符串名称){ al.clear(); Todo td=新Todo(); td.setName(name); al.add(td.getName()); 返回al; } } //我是波乔 公共课待办事项{ 私有字符串名称; 公共void集合名(字符串名){ this.name=名称; } 公共字符串getName(){ 返回名称; } }

Java 如何在Rest Webservice中返回arraylist //主服务 @路径(“/test”) 公共类返回{ public static ArrayList al=new ArrayList(); @职位 @路径(“/new/{name}”) @生成(MediaType.TEXT\u PLAIN) 公共ArrayList显示(@PathParam(“名称”)字符串名称){ al.clear(); Todo td=新Todo(); td.setName(name); al.add(td.getName()); 返回al; } } //我是波乔 公共课待办事项{ 私有字符串名称; 公共void集合名(字符串名){ this.name=名称; } 公共字符串getName(){ 返回名称; } },java,rest,Java,Rest,每当我点击服务,我都会得到如下错误 Java类Java.util.ArrayList和Java的消息体编写器 键入java.util.ArrayList和MIME媒体类型 找不到文本/纯文本 不能使用ArrayList并生成纯文本。您必须使用JSON。要在jax rs中设置JSON消息体写入,您需要为ObjectMapper提供一个@Provider: 我想,您需要一个映射器实现来帮助序列化和反序列化。如果没有这些,它就不知道如何将arraylist转换为text/plain或applicati

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

Java类Java.util.ArrayList和Java的消息体编写器 键入java.util.ArrayList和MIME媒体类型 找不到文本/纯文本


不能使用ArrayList并生成纯文本。您必须使用JSON。要在jax rs中设置JSON消息体写入,您需要为ObjectMapper提供一个@Provider:

我想,您需要一个映射器实现来帮助序列化和反序列化。如果没有这些,它就不知道如何将arraylist转换为text/plain或application/json,或者任何其他MIME类型

若您处理的是application/json,那个么这个库就是一个非常好的映射器。它有messagebodyreader和messagebodywriter供您完成困难的工作


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

这个静态数组列表不是一个好主意,如果对
/test/new/name
的两个请求同时到达会发生什么情况?关于错误消息,使用的框架不知道如何从
ArrayList
中生成文本,这就是当我在@products中使用Application_JSON时,在@products?MediaType.XML或MediaType.JSON(类似)中编写什么的问题。它给我这个错误一个Java类Java.util.ArrayList和Java类型Java.util.ArrayList的消息体编写器,没有找到MIME媒体类型应用程序/json。我是新手,请您为mapper编写代码好吗?感谢在大多数情况下,当您包含jackson jar时,它会自动注册,因为链接上说可能不需要代码,否则我这里是jersey的一个例子,我已经包含了这些jar,并写了如下内容:@POST@Path(“/new/{name}”)@products(MediaType.APPLICATION_JSON)public ArrayList display(@PathParam(“name”)字符串名称){al.clear();Todo td=new Todo();td.setName(name);al.add(td.getName());return al;}仍然面临同样的问题吗?我不确定你用的是什么jor jax rs?是jersey,resteasy,cxf,restlet,你能在问题中列出你的jar吗?jax-rs,我使用了Gson,我能够得到输出,但现在我想知道如何将这个arraylist和两个布尔值放在hashmap中并返回hashmap
//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;
    }

}