我正在编写REST。这里的示例工作得很好,但是对这里的一些东西感到很困惑。我的方法getAll返回一个字符串,但该方法已被注释以生成JSON的MIME MediaType。我的问题是,最终返回的响应(doc)是JSONObject还是json字符串(因此是JSON格式的字符串)。这样我就能知道当我得到它的时候如何处理它。
@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;
}这对我的文档也有很大的帮助。感谢所有的努力,谢谢。
发布于 2016-07-27 10:20:58
我的问题是,最终返回的响应(doc)是JSONObject还是json字符串(因此是JSON格式的字符串)?
是的,它将返回json字符串,如果希望将JSON和HTTP一起发送,可以使用响应作为返回类型。
示例:
@GET
@Path("/testGet")
@Produces("application/json")
public Response testGet() {
String json = //Create JSON String
return Response.ok(json, MediaType.APPLICATION_JSON).build();
}发布于 2016-07-27 10:22:54
方法实际返回的内容
这正是你的回报。这是爪哇。这就是Java的工作方式。没有魔法巫毒。
也许你还在想别的事。
所有响应都写入响应输出流。返回类型是什么并不重要。重要的是,有一个MessageBodyWriter知道如何根据@Produces内容类型将该类型写入输出流。如果返回类型是字符串,那么需要有一个编写器知道如何处理String-application/json组合。如果返回类型是JSONObject,那么需要一个可以处理这个问题的编写器。
也请参阅: JAX-RS实体提供者
客户机不需要了解任何Java类型(例如Sting、JSONObect等)。它以字节流的形式获取数据,并使用它所使用的任何转换方法来转换数据。
发布于 2016-07-27 10:24:47
您最终生成了一个JSON字符串。
不只是返回字符串,建议使用实体
return Response.ok().entity(doc).build();https://stackoverflow.com/questions/38609944
复制相似问题