javax.ws.rs:一个方法实际返回的内容

时间:2016-07-27 10:09:02

标签: java json rest jersey jetty

正在使用REST API。这个样本在这里工作正常,但我真的很困惑这里的东西。我的方法getAll返回一个String,但该方法已注释为生成JSON的MIME MediaType。我的问题是,最终返回的响应(doc)是一个JSONObject还是一个json String(因此是一个JSON格式的String)。这样我就可以知道如何处理响应。

    @Path("/membership/{pageNumber}")
    @GET
    @Produces("application/json")
    public String getAll(@PathParam("pageNumber") String pageNumber){

        Map<String , String > params = new HashMap<>();
        String doc = HTTPClient.sendGet("localhost:9500/users/list/membership/field/"
                      +pageNumber, params, 60);

        return doc;
    }

这对我的文档也很有帮助。 感谢所有的努力,谢谢。

3 个答案:

答案 0 :(得分:2)

  

我的问题是,最终返回的响应(doc)是JSONObject还是   只是一个json String(因此是一个JSON格式的字符串)

是的,它将返回 json String ,如果要将JSON和HTTP状态一起发送,可以使用Response作为返回类型。

示例:

@GET
@Path("/testGet")
@Produces("application/json")
public Response testGet() {
    String json = //Create JSON String
    return Response.ok(json, MediaType.APPLICATION_JSON).build();
}

答案 1 :(得分:1)

  

通过方法实际返回的内容

你的回报究竟是什么。这是Java。这就是Java的工作原理。没有魔法伏都教。

也许你想知道其他事情。

所有响应都写入响应输出流。返回类型并不重要。重要的是有一个MessageBodyWriter知道如何根据@Produces内容类型将该类型写入输出流。如果返回类型是String,则需要有一个知道如何处理String-application/json组合的编写器。如果返回类型为JSONObject,则需要有一个可以处理 的编写器。

另请参阅: JAX-RS Entity Providers

客户端需要对任何Java类型(即Sting,JSONObect等)一无所知。它使数据成为字节流,并使用它使用的任何转换方法转换数据。

答案 2 :(得分:1)

您最终会生成一个JSON字符串。

建议不要只返回String,而是使用Entity

return Response.ok().entity(doc).build();