使用自定义对象接收 json 对 Rest API 的响应
Use custom object to receive json response for Rest API
我已经使用 Jersey 设置了一个 rest API 服务,它会产生 json 响应。这是服务器代码:
@Path("/addNumservice")
public class AddNumService {
@GET
@Produces("application/json")
public Response addNum() throws JSONException {
JSONObject jsonObject = new JSONObject();
int x = 5, y = 4;
int z = x + y;
jsonObject.put("Sum Value", z);
String result = "@Produces(\"application/json\") Output: \n\nNumber adding Output: \n\n" + jsonObject;
return Response.status(200).entity(result).build();
}
}
当我 运行 服务器时,我按预期看到 o/p:
@Produces("application/json") Output:
Number adding Output:
{"Sum Value":9}
现在我想设置一个客户端 class 以在我定义的自定义对象 AddNumResponseObject
中接收 json 响应,但是当我这样做时:
AddNumResponseObject object
= webResource2.accept("application/json").get(AddNumResponseObject.class);
I get this error: A message body reader for Java class com.crunchify.client.AddNumResponseObject, and Java type class com.crunchify.client.AddNumResponseObject, and MIME media type application/json was not found
有人可以帮我吗?
谢谢!
您应该向您的项目添加一个支持 JSON 到 POJO 的提供程序(反之亦然)。现在我假设您使用的是 Jersey 1(由名称 webResource2
推断)。在这种情况下,您应该添加此依赖项
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey-version}</version>
</dependency>
然后在客户端注册
ClientConfig config = new DefaultClientConfig();
//config.getClasses().add(JacksonJsonProvider.class);
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client c = Client.create(config);
有关服务器配置(如果需要)或 Jersey 2 支持,请参阅 this post. Also see here
我已经使用 Jersey 设置了一个 rest API 服务,它会产生 json 响应。这是服务器代码:
@Path("/addNumservice")
public class AddNumService {
@GET
@Produces("application/json")
public Response addNum() throws JSONException {
JSONObject jsonObject = new JSONObject();
int x = 5, y = 4;
int z = x + y;
jsonObject.put("Sum Value", z);
String result = "@Produces(\"application/json\") Output: \n\nNumber adding Output: \n\n" + jsonObject;
return Response.status(200).entity(result).build();
}
}
当我 运行 服务器时,我按预期看到 o/p:
@Produces("application/json") Output:
Number adding Output:
{"Sum Value":9}
现在我想设置一个客户端 class 以在我定义的自定义对象 AddNumResponseObject
中接收 json 响应,但是当我这样做时:
AddNumResponseObject object
= webResource2.accept("application/json").get(AddNumResponseObject.class);
I get this error: A message body reader for Java class com.crunchify.client.AddNumResponseObject, and Java type class com.crunchify.client.AddNumResponseObject, and MIME media type application/json was not found
有人可以帮我吗?
谢谢!
您应该向您的项目添加一个支持 JSON 到 POJO 的提供程序(反之亦然)。现在我假设您使用的是 Jersey 1(由名称 webResource2
推断)。在这种情况下,您应该添加此依赖项
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>${jersey-version}</version>
</dependency>
然后在客户端注册
ClientConfig config = new DefaultClientConfig();
//config.getClasses().add(JacksonJsonProvider.class);
config.getFeatures().put(JSONConfiguration.FEATURE_POJO_MAPPING,
Boolean.TRUE);
Client c = Client.create(config);
有关服务器配置(如果需要)或 Jersey 2 支持,请参阅 this post. Also see here