正在使用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;
}
这对我的文档也很有帮助。 感谢所有的努力,谢谢。
答案 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();