首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javax.ws.rs:方法实际上返回了什么?

javax.ws.rs:方法实际上返回了什么?
EN

Stack Overflow用户
提问于 2016-07-27 10:09:01
回答 3查看 60关注 0票数 0

我正在编写REST。这里的示例工作得很好,但是对这里的一些东西感到很困惑。我的方法getAll返回一个字符串,但该方法已被注释以生成JSON的MIME MediaType。我的问题是,最终返回的响应(doc)是JSONObject还是json字符串(因此是JSON格式的字符串)。这样我就能知道当我得到它的时候如何处理它。

代码语言:javascript
复制
    @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;
    }

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-07-27 10:20:58

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

是的,它将返回json字符串,如果希望将JSON和HTTP一起发送,可以使用响应作为返回类型。

示例:

代码语言:javascript
复制
@GET
@Path("/testGet")
@Produces("application/json")
public Response testGet() {
    String json = //Create JSON String
    return Response.ok(json, MediaType.APPLICATION_JSON).build();
}
票数 2
EN

Stack Overflow用户

发布于 2016-07-27 10:22:54

方法实际返回的内容

这正是你的回报。这是爪哇。这就是Java的工作方式。没有魔法巫毒。

也许你还在想别的事。

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

也请参阅: JAX-RS实体提供者

客户机不需要了解任何Java类型(例如Sting、JSONObect等)。它以字节流的形式获取数据,并使用它所使用的任何转换方法来转换数据。

票数 1
EN

Stack Overflow用户

发布于 2016-07-27 10:24:47

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

不只是返回字符串,建议使用实体

代码语言:javascript
复制
return Response.ok().entity(doc).build();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38609944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档