我正在尝试为Web资源构建API包装器。我在存储返回的JSON时遇到问题。我特别感到困惑,因为我正在尝试使用最新的Jersey 2.27,并且在线上的许多可用指南适用于似乎不完全兼容的早期版本。
RESTful Web资源返回JSON;类Company
可以接收它。
这就是我所拥有的。依赖项:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.inject</groupId>
<artifactId>jersey-hk2</artifactId>
<version>2.27</version>
</dependency>
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.27</version>
</dependency>
代码:
import org.glassfish.jersey.client.JerseyClientBuilder;
import org.glassfish.jersey.jackson.JacksonFeature;
import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJsonProvider;
public class OpenCorpAPIClient {
private final String BASE_URL = ...;
private final String API_PARAM = ...;
private final String api_key;
private Client client;
public APIClient(String api_key) {
this.api_key = api_key;
client = JerseyClientBuilder.newClient()
.register(new JacksonJsonProvider())
.register(JacksonFeature.class);
}
public Company getCompany(String resource_uri) {
WebTarget target = client.target(BASE_URL)
.path(resource_uri)
.queryParam(API_PARAM, api_key);
Response response = target.request(MediaType.APPLICATION_JSON_TYPE)
.get();
>> return response.readEntity(Company.class);
}
这是我编译时出现的错误。错误的位置在上面的代码中突出显示。
[ERROR] /opt/path/to/Project/src/main/java/package/name/APIClient.java:[107,24] cannot find symbol
symbol: method readEntity(java.lang.Class<com.pwc.kyv.opencorp.Company>)
location: variable response of type javax.ws.rs.core.Response
Response
对象具有一个函数readEntity(Class<T> entityType)
,这就是我要调用的函数。因此,如果将调用更改为String之类的基本类型,则会收到相同的错误。
我在做什么错,在这里?如何告诉Jersey / Jackson将此JSON解析为特定类型的Java对象?