从 .readEntity 获取对象
Get object from .readEntity
我有一个 java 服务调用 API 并在 return
中获取以下内容
{
"status": {
"service1": {
"available": true,
...
},
"service2": {
"available": false,
...
},
...
}
}
如何使用 .readEntity
(或其他东西)来获取给定字段的对象;说 service2
或者只是将 status
中的所有对象转换为 List<>
个对象
String output = response.readEntity(String.class);
有效,但我不知道如何将它正确解析为有用的东西,因为我不想在字符串中搜索
import javax.ws.rs.client.Client;
import javax.ws.rs.core.Response;
Response response = client
.target(url)
.request()
.get();
String output = response.readEntity(String.class);
您可以使用 POJO 对数据建模并使用它来提取数据。您发布的 JSON 模型可能类似于
public static class ResponseData {
private Map<String, Service> status;
// getters and setters
public static class Service {
private boolean available;
// getters and setters
}
}
getter 和 setter 应该使用 JavaBean naming convention。然后确保您有 JSON 提供商,例如 Jackson
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
现在您可以简单地将 POJO class 传递给 readEntity()
方法,它会将 JSON 反序列化到您的 POJO class.
ResponseData resData = res.readEntity(ResponseData.class);
Service service2 = resData.getStatus().get("service2");
有关建模 JSON 的更多详细信息,您可以 Google 搜索“data binding with Jackson”
我有一个 java 服务调用 API 并在 return
中获取以下内容{
"status": {
"service1": {
"available": true,
...
},
"service2": {
"available": false,
...
},
...
}
}
如何使用 .readEntity
(或其他东西)来获取给定字段的对象;说 service2
或者只是将 status
中的所有对象转换为 List<>
个对象
String output = response.readEntity(String.class);
有效,但我不知道如何将它正确解析为有用的东西,因为我不想在字符串中搜索
import javax.ws.rs.client.Client;
import javax.ws.rs.core.Response;
Response response = client
.target(url)
.request()
.get();
String output = response.readEntity(String.class);
您可以使用 POJO 对数据建模并使用它来提取数据。您发布的 JSON 模型可能类似于
public static class ResponseData {
private Map<String, Service> status;
// getters and setters
public static class Service {
private boolean available;
// getters and setters
}
}
getter 和 setter 应该使用 JavaBean naming convention。然后确保您有 JSON 提供商,例如 Jackson
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>
现在您可以简单地将 POJO class 传递给 readEntity()
方法,它会将 JSON 反序列化到您的 POJO class.
ResponseData resData = res.readEntity(ResponseData.class);
Service service2 = resData.getStatus().get("service2");
有关建模 JSON 的更多详细信息,您可以 Google 搜索“data binding with Jackson”